1 // Copyright 2021 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/x24-transpose.yaml
8 // Generator: tools/generate-transpose-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/transpose.h>
17 #include "transpose-microkernel-tester.h"
18
19
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_2)20 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_2) {
21 TransposeMicrokernelTester()
22 .input_stride(4)
23 .output_stride(2)
24 .block_width(2)
25 .block_height(1)
26 .element_size(3)
27 .iterations(1)
28 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
29 }
30
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_2_bw_1_4)31 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_2_bw_1_4) {
32 for(size_t i = 1; i <= 2; ++i){
33 for(size_t j = 1; j <= 4; ++j){
34 TransposeMicrokernelTester()
35 .input_stride(j * 3)
36 .output_stride(i * 7)
37 .block_width(j)
38 .block_height(i)
39 .element_size(3)
40 .iterations(1)
41 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
42 }
43 }
44 }
45
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_4)46 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_4) {
47 TransposeMicrokernelTester()
48 .input_stride(4)
49 .output_stride(1)
50 .block_width(4)
51 .block_height(1)
52 .element_size(3)
53 .iterations(1)
54 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
55 }
56
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_3_4)57 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_3_4) {
58 for(size_t i = 3; i < 4; ++i){
59 TransposeMicrokernelTester()
60 .input_stride(i)
61 .output_stride(2)
62 .block_width(i)
63 .block_height(1)
64 .element_size(3)
65 .iterations(1)
66 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
67 }
68 }
69
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_2_bw_3_4)70 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_2_bw_3_4) {
71 for(size_t i = 3; i < 4; ++i){
72 TransposeMicrokernelTester()
73 .input_stride(i)
74 .output_stride(2)
75 .block_width(i)
76 .block_height(2)
77 .element_size(3)
78 .iterations(1)
79 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
80 }
81 }
82
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_2_bw_2)83 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_2_bw_2) {
84 TransposeMicrokernelTester()
85 .input_stride(2)
86 .output_stride(7)
87 .block_width(2)
88 .block_height(2)
89 .element_size(3)
90 .iterations(1)
91 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
92 }
93
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_2_2_bw_2)94 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_2_2_bw_2){
95 for(size_t i = 2; i < 2; ++i){
96 TransposeMicrokernelTester()
97 .input_stride(19)
98 .output_stride(i)
99 .block_width(5)
100 .block_height(i)
101 .element_size(3)
102 .iterations(1)
103 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
104 }
105 }
106
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_2_2_bw_4)107 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_2_2_bw_4){
108 for(size_t i = 2; i < 2; ++i){
109 TransposeMicrokernelTester()
110 .input_stride(4)
111 .output_stride(i)
112 .block_width(4)
113 .block_height(i)
114 .element_size(3)
115 .iterations(1)
116 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
117 }
118 }
119
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_2_2_bw_3_4)120 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_2_2_bw_3_4) {
121 for(size_t i = 2; i < 2; ++i){
122 for(size_t j = 3; j < 4; ++j){
123 TransposeMicrokernelTester()
124 .input_stride(j)
125 .output_stride(i)
126 .block_width(j)
127 .block_height(i)
128 .element_size(3)
129 .iterations(1)
130 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
131 }
132 }
133 }
134
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_2_is_4)135 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_2_is_4) {
136 TransposeMicrokernelTester()
137 .input_stride(4)
138 .output_stride(1)
139 .block_width(2)
140 .block_height(1)
141 .element_size(3)
142 .iterations(1)
143 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
144 }
145
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_2_os_2)146 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_2_os_2) {
147 TransposeMicrokernelTester()
148 .input_stride(2)
149 .output_stride(2)
150 .block_width(2)
151 .block_height(1)
152 .element_size(3)
153 .iterations(1)
154 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
155 }
156
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_1_bw_2_is_4_os_2)157 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_1_bw_2_is_4_os_2) {
158 TransposeMicrokernelTester()
159 .input_stride(4)
160 .output_stride(2)
161 .block_width(2)
162 .block_height(1)
163 .element_size(3)
164 .iterations(1)
165 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
166 }
167
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_17_bw_38_ies_14)168 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_17_bw_38_ies_14) {
169 TransposeMicrokernelTester()
170 .input_stride(38)
171 .output_stride(17)
172 .block_width(38)
173 .block_height(17)
174 .element_size(3)
175 .input_element_stride(14)
176 .iterations(1)
177 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
178 }
179
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_3_bw_10_oes_14)180 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_3_bw_10_oes_14) {
181 TransposeMicrokernelTester()
182 .input_stride(10)
183 .output_stride(3)
184 .block_width(10)
185 .block_height(3)
186 .element_size(3)
187 .output_element_stride(14)
188 .iterations(1)
189 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
190 }
191
TEST(X24_TRANSPOSEC__1X2_SCALAR_3,bh_7_bw_46_ies_20_oes_16)192 TEST(X24_TRANSPOSEC__1X2_SCALAR_3, bh_7_bw_46_ies_20_oes_16) {
193 TransposeMicrokernelTester()
194 .input_stride(51)
195 .output_stride(13)
196 .block_width(46)
197 .block_height(7)
198 .element_size(3)
199 .input_element_stride(20)
200 .output_element_stride(16)
201 .iterations(1)
202 .Test(xnn_x24_transposec_ukernel__1x2_scalar);
203 }
204
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_4)205 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_4) {
206 TransposeMicrokernelTester()
207 .input_stride(8)
208 .output_stride(2)
209 .block_width(4)
210 .block_height(1)
211 .element_size(3)
212 .iterations(1)
213 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
214 }
215
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_2_bw_1_8)216 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_2_bw_1_8) {
217 for(size_t i = 1; i <= 2; ++i){
218 for(size_t j = 1; j <= 8; ++j){
219 TransposeMicrokernelTester()
220 .input_stride(j * 3)
221 .output_stride(i * 7)
222 .block_width(j)
223 .block_height(i)
224 .element_size(3)
225 .iterations(1)
226 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
227 }
228 }
229 }
230
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_8)231 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_8) {
232 TransposeMicrokernelTester()
233 .input_stride(8)
234 .output_stride(1)
235 .block_width(8)
236 .block_height(1)
237 .element_size(3)
238 .iterations(1)
239 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
240 }
241
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_5_8)242 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_5_8) {
243 for(size_t i = 5; i < 8; ++i){
244 TransposeMicrokernelTester()
245 .input_stride(i)
246 .output_stride(2)
247 .block_width(i)
248 .block_height(1)
249 .element_size(3)
250 .iterations(1)
251 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
252 }
253 }
254
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_2_bw_5_8)255 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_2_bw_5_8) {
256 for(size_t i = 5; i < 8; ++i){
257 TransposeMicrokernelTester()
258 .input_stride(i)
259 .output_stride(2)
260 .block_width(i)
261 .block_height(2)
262 .element_size(3)
263 .iterations(1)
264 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
265 }
266 }
267
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_2_bw_4)268 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_2_bw_4) {
269 TransposeMicrokernelTester()
270 .input_stride(4)
271 .output_stride(7)
272 .block_width(4)
273 .block_height(2)
274 .element_size(3)
275 .iterations(1)
276 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
277 }
278
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_2_2_bw_4)279 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_2_2_bw_4){
280 for(size_t i = 2; i < 2; ++i){
281 TransposeMicrokernelTester()
282 .input_stride(21)
283 .output_stride(i)
284 .block_width(7)
285 .block_height(i)
286 .element_size(3)
287 .iterations(1)
288 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
289 }
290 }
291
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_2_2_bw_8)292 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_2_2_bw_8){
293 for(size_t i = 2; i < 2; ++i){
294 TransposeMicrokernelTester()
295 .input_stride(8)
296 .output_stride(i)
297 .block_width(8)
298 .block_height(i)
299 .element_size(3)
300 .iterations(1)
301 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
302 }
303 }
304
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_2_2_bw_5_8)305 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_2_2_bw_5_8) {
306 for(size_t i = 2; i < 2; ++i){
307 for(size_t j = 5; j < 8; ++j){
308 TransposeMicrokernelTester()
309 .input_stride(j)
310 .output_stride(i)
311 .block_width(j)
312 .block_height(i)
313 .element_size(3)
314 .iterations(1)
315 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
316 }
317 }
318 }
319
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_4_is_8)320 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_4_is_8) {
321 TransposeMicrokernelTester()
322 .input_stride(8)
323 .output_stride(1)
324 .block_width(4)
325 .block_height(1)
326 .element_size(3)
327 .iterations(1)
328 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
329 }
330
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_4_os_2)331 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_4_os_2) {
332 TransposeMicrokernelTester()
333 .input_stride(4)
334 .output_stride(2)
335 .block_width(4)
336 .block_height(1)
337 .element_size(3)
338 .iterations(1)
339 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
340 }
341
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_1_bw_4_is_8_os_2)342 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_1_bw_4_is_8_os_2) {
343 TransposeMicrokernelTester()
344 .input_stride(8)
345 .output_stride(2)
346 .block_width(4)
347 .block_height(1)
348 .element_size(3)
349 .iterations(1)
350 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
351 }
352
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_17_bw_76_ies_14)353 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_17_bw_76_ies_14) {
354 TransposeMicrokernelTester()
355 .input_stride(76)
356 .output_stride(17)
357 .block_width(76)
358 .block_height(17)
359 .element_size(3)
360 .input_element_stride(14)
361 .iterations(1)
362 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
363 }
364
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_3_bw_20_oes_14)365 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_3_bw_20_oes_14) {
366 TransposeMicrokernelTester()
367 .input_stride(20)
368 .output_stride(3)
369 .block_width(20)
370 .block_height(3)
371 .element_size(3)
372 .output_element_stride(14)
373 .iterations(1)
374 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
375 }
376
TEST(X24_TRANSPOSEC__1X4_SCALAR_3,bh_7_bw_92_ies_20_oes_16)377 TEST(X24_TRANSPOSEC__1X4_SCALAR_3, bh_7_bw_92_ies_20_oes_16) {
378 TransposeMicrokernelTester()
379 .input_stride(97)
380 .output_stride(13)
381 .block_width(92)
382 .block_height(7)
383 .element_size(3)
384 .input_element_stride(20)
385 .output_element_stride(16)
386 .iterations(1)
387 .Test(xnn_x24_transposec_ukernel__1x4_scalar);
388 }
389
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_1)390 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_1) {
391 TransposeMicrokernelTester()
392 .input_stride(2)
393 .output_stride(4)
394 .block_width(1)
395 .block_height(2)
396 .element_size(3)
397 .iterations(1)
398 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
399 }
400
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_1_4_bw_1_2)401 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_1_4_bw_1_2) {
402 for(size_t i = 1; i <= 4; ++i){
403 for(size_t j = 1; j <= 2; ++j){
404 TransposeMicrokernelTester()
405 .input_stride(j * 3)
406 .output_stride(i * 7)
407 .block_width(j)
408 .block_height(i)
409 .element_size(3)
410 .iterations(1)
411 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
412 }
413 }
414 }
415
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_2)416 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_2) {
417 TransposeMicrokernelTester()
418 .input_stride(2)
419 .output_stride(2)
420 .block_width(2)
421 .block_height(2)
422 .element_size(3)
423 .iterations(1)
424 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
425 }
426
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_2_2)427 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_2_2) {
428 for(size_t i = 2; i < 2; ++i){
429 TransposeMicrokernelTester()
430 .input_stride(i)
431 .output_stride(4)
432 .block_width(i)
433 .block_height(2)
434 .element_size(3)
435 .iterations(1)
436 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
437 }
438 }
439
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_4_bw_2_2)440 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_4_bw_2_2) {
441 for(size_t i = 2; i < 2; ++i){
442 TransposeMicrokernelTester()
443 .input_stride(i)
444 .output_stride(4)
445 .block_width(i)
446 .block_height(4)
447 .element_size(3)
448 .iterations(1)
449 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
450 }
451 }
452
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_4_bw_1)453 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_4_bw_1) {
454 TransposeMicrokernelTester()
455 .input_stride(1)
456 .output_stride(10)
457 .block_width(1)
458 .block_height(4)
459 .element_size(3)
460 .iterations(1)
461 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
462 }
463
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_3_4_bw_1)464 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_3_4_bw_1){
465 for(size_t i = 3; i < 4; ++i){
466 TransposeMicrokernelTester()
467 .input_stride(18)
468 .output_stride(i)
469 .block_width(4)
470 .block_height(i)
471 .element_size(3)
472 .iterations(1)
473 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
474 }
475 }
476
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_3_4_bw_2)477 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_3_4_bw_2){
478 for(size_t i = 3; i < 4; ++i){
479 TransposeMicrokernelTester()
480 .input_stride(2)
481 .output_stride(i)
482 .block_width(2)
483 .block_height(i)
484 .element_size(3)
485 .iterations(1)
486 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
487 }
488 }
489
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_3_4_bw_2_2)490 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_3_4_bw_2_2) {
491 for(size_t i = 3; i < 4; ++i){
492 for(size_t j = 2; j < 2; ++j){
493 TransposeMicrokernelTester()
494 .input_stride(j)
495 .output_stride(i)
496 .block_width(j)
497 .block_height(i)
498 .element_size(3)
499 .iterations(1)
500 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
501 }
502 }
503 }
504
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_1_is_2)505 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_1_is_2) {
506 TransposeMicrokernelTester()
507 .input_stride(2)
508 .output_stride(2)
509 .block_width(1)
510 .block_height(2)
511 .element_size(3)
512 .iterations(1)
513 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
514 }
515
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_1_os_4)516 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_1_os_4) {
517 TransposeMicrokernelTester()
518 .input_stride(1)
519 .output_stride(4)
520 .block_width(1)
521 .block_height(2)
522 .element_size(3)
523 .iterations(1)
524 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
525 }
526
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_2_bw_1_is_2_os_4)527 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_2_bw_1_is_2_os_4) {
528 TransposeMicrokernelTester()
529 .input_stride(2)
530 .output_stride(4)
531 .block_width(1)
532 .block_height(2)
533 .element_size(3)
534 .iterations(1)
535 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
536 }
537
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_34_bw_19_ies_14)538 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_34_bw_19_ies_14) {
539 TransposeMicrokernelTester()
540 .input_stride(19)
541 .output_stride(34)
542 .block_width(19)
543 .block_height(34)
544 .element_size(3)
545 .input_element_stride(14)
546 .iterations(1)
547 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
548 }
549
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_6_bw_5_oes_14)550 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_6_bw_5_oes_14) {
551 TransposeMicrokernelTester()
552 .input_stride(5)
553 .output_stride(6)
554 .block_width(5)
555 .block_height(6)
556 .element_size(3)
557 .output_element_stride(14)
558 .iterations(1)
559 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
560 }
561
TEST(X24_TRANSPOSEC__2X1_SCALAR_3,bh_14_bw_23_ies_20_oes_16)562 TEST(X24_TRANSPOSEC__2X1_SCALAR_3, bh_14_bw_23_ies_20_oes_16) {
563 TransposeMicrokernelTester()
564 .input_stride(28)
565 .output_stride(20)
566 .block_width(23)
567 .block_height(14)
568 .element_size(3)
569 .input_element_stride(20)
570 .output_element_stride(16)
571 .iterations(1)
572 .Test(xnn_x24_transposec_ukernel__2x1_scalar);
573 }
574
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_2)575 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_2) {
576 TransposeMicrokernelTester()
577 .input_stride(4)
578 .output_stride(4)
579 .block_width(2)
580 .block_height(2)
581 .element_size(3)
582 .iterations(1)
583 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
584 }
585
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_1_4_bw_1_4)586 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_1_4_bw_1_4) {
587 for(size_t i = 1; i <= 4; ++i){
588 for(size_t j = 1; j <= 4; ++j){
589 TransposeMicrokernelTester()
590 .input_stride(j * 3)
591 .output_stride(i * 7)
592 .block_width(j)
593 .block_height(i)
594 .element_size(3)
595 .iterations(1)
596 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
597 }
598 }
599 }
600
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_4)601 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_4) {
602 TransposeMicrokernelTester()
603 .input_stride(4)
604 .output_stride(2)
605 .block_width(4)
606 .block_height(2)
607 .element_size(3)
608 .iterations(1)
609 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
610 }
611
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_3_4)612 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_3_4) {
613 for(size_t i = 3; i < 4; ++i){
614 TransposeMicrokernelTester()
615 .input_stride(i)
616 .output_stride(4)
617 .block_width(i)
618 .block_height(2)
619 .element_size(3)
620 .iterations(1)
621 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
622 }
623 }
624
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_4_bw_3_4)625 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_4_bw_3_4) {
626 for(size_t i = 3; i < 4; ++i){
627 TransposeMicrokernelTester()
628 .input_stride(i)
629 .output_stride(4)
630 .block_width(i)
631 .block_height(4)
632 .element_size(3)
633 .iterations(1)
634 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
635 }
636 }
637
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_4_bw_2)638 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_4_bw_2) {
639 TransposeMicrokernelTester()
640 .input_stride(2)
641 .output_stride(10)
642 .block_width(2)
643 .block_height(4)
644 .element_size(3)
645 .iterations(1)
646 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
647 }
648
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_3_4_bw_2)649 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_3_4_bw_2){
650 for(size_t i = 3; i < 4; ++i){
651 TransposeMicrokernelTester()
652 .input_stride(19)
653 .output_stride(i)
654 .block_width(5)
655 .block_height(i)
656 .element_size(3)
657 .iterations(1)
658 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
659 }
660 }
661
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_3_4_bw_4)662 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_3_4_bw_4){
663 for(size_t i = 3; i < 4; ++i){
664 TransposeMicrokernelTester()
665 .input_stride(4)
666 .output_stride(i)
667 .block_width(4)
668 .block_height(i)
669 .element_size(3)
670 .iterations(1)
671 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
672 }
673 }
674
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_3_4_bw_3_4)675 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_3_4_bw_3_4) {
676 for(size_t i = 3; i < 4; ++i){
677 for(size_t j = 3; j < 4; ++j){
678 TransposeMicrokernelTester()
679 .input_stride(j)
680 .output_stride(i)
681 .block_width(j)
682 .block_height(i)
683 .element_size(3)
684 .iterations(1)
685 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
686 }
687 }
688 }
689
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_2_is_4)690 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_2_is_4) {
691 TransposeMicrokernelTester()
692 .input_stride(4)
693 .output_stride(2)
694 .block_width(2)
695 .block_height(2)
696 .element_size(3)
697 .iterations(1)
698 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
699 }
700
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_2_os_4)701 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_2_os_4) {
702 TransposeMicrokernelTester()
703 .input_stride(2)
704 .output_stride(4)
705 .block_width(2)
706 .block_height(2)
707 .element_size(3)
708 .iterations(1)
709 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
710 }
711
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_2_bw_2_is_4_os_4)712 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_2_bw_2_is_4_os_4) {
713 TransposeMicrokernelTester()
714 .input_stride(4)
715 .output_stride(4)
716 .block_width(2)
717 .block_height(2)
718 .element_size(3)
719 .iterations(1)
720 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
721 }
722
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_34_bw_38_ies_14)723 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_34_bw_38_ies_14) {
724 TransposeMicrokernelTester()
725 .input_stride(38)
726 .output_stride(34)
727 .block_width(38)
728 .block_height(34)
729 .element_size(3)
730 .input_element_stride(14)
731 .iterations(1)
732 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
733 }
734
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_6_bw_10_oes_14)735 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_6_bw_10_oes_14) {
736 TransposeMicrokernelTester()
737 .input_stride(10)
738 .output_stride(6)
739 .block_width(10)
740 .block_height(6)
741 .element_size(3)
742 .output_element_stride(14)
743 .iterations(1)
744 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
745 }
746
TEST(X24_TRANSPOSEC__2X2_SCALAR_3,bh_14_bw_46_ies_20_oes_16)747 TEST(X24_TRANSPOSEC__2X2_SCALAR_3, bh_14_bw_46_ies_20_oes_16) {
748 TransposeMicrokernelTester()
749 .input_stride(51)
750 .output_stride(20)
751 .block_width(46)
752 .block_height(14)
753 .element_size(3)
754 .input_element_stride(20)
755 .output_element_stride(16)
756 .iterations(1)
757 .Test(xnn_x24_transposec_ukernel__2x2_scalar);
758 }
759
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_4)760 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_4) {
761 TransposeMicrokernelTester()
762 .input_stride(8)
763 .output_stride(4)
764 .block_width(4)
765 .block_height(2)
766 .element_size(3)
767 .iterations(1)
768 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
769 }
770
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_1_4_bw_1_8)771 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_1_4_bw_1_8) {
772 for(size_t i = 1; i <= 4; ++i){
773 for(size_t j = 1; j <= 8; ++j){
774 TransposeMicrokernelTester()
775 .input_stride(j * 3)
776 .output_stride(i * 7)
777 .block_width(j)
778 .block_height(i)
779 .element_size(3)
780 .iterations(1)
781 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
782 }
783 }
784 }
785
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_8)786 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_8) {
787 TransposeMicrokernelTester()
788 .input_stride(8)
789 .output_stride(2)
790 .block_width(8)
791 .block_height(2)
792 .element_size(3)
793 .iterations(1)
794 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
795 }
796
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_5_8)797 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_5_8) {
798 for(size_t i = 5; i < 8; ++i){
799 TransposeMicrokernelTester()
800 .input_stride(i)
801 .output_stride(4)
802 .block_width(i)
803 .block_height(2)
804 .element_size(3)
805 .iterations(1)
806 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
807 }
808 }
809
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_4_bw_5_8)810 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_4_bw_5_8) {
811 for(size_t i = 5; i < 8; ++i){
812 TransposeMicrokernelTester()
813 .input_stride(i)
814 .output_stride(4)
815 .block_width(i)
816 .block_height(4)
817 .element_size(3)
818 .iterations(1)
819 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
820 }
821 }
822
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_4_bw_4)823 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_4_bw_4) {
824 TransposeMicrokernelTester()
825 .input_stride(4)
826 .output_stride(10)
827 .block_width(4)
828 .block_height(4)
829 .element_size(3)
830 .iterations(1)
831 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
832 }
833
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_3_4_bw_4)834 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_3_4_bw_4){
835 for(size_t i = 3; i < 4; ++i){
836 TransposeMicrokernelTester()
837 .input_stride(21)
838 .output_stride(i)
839 .block_width(7)
840 .block_height(i)
841 .element_size(3)
842 .iterations(1)
843 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
844 }
845 }
846
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_3_4_bw_8)847 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_3_4_bw_8){
848 for(size_t i = 3; i < 4; ++i){
849 TransposeMicrokernelTester()
850 .input_stride(8)
851 .output_stride(i)
852 .block_width(8)
853 .block_height(i)
854 .element_size(3)
855 .iterations(1)
856 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
857 }
858 }
859
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_3_4_bw_5_8)860 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_3_4_bw_5_8) {
861 for(size_t i = 3; i < 4; ++i){
862 for(size_t j = 5; j < 8; ++j){
863 TransposeMicrokernelTester()
864 .input_stride(j)
865 .output_stride(i)
866 .block_width(j)
867 .block_height(i)
868 .element_size(3)
869 .iterations(1)
870 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
871 }
872 }
873 }
874
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_4_is_8)875 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_4_is_8) {
876 TransposeMicrokernelTester()
877 .input_stride(8)
878 .output_stride(2)
879 .block_width(4)
880 .block_height(2)
881 .element_size(3)
882 .iterations(1)
883 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
884 }
885
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_4_os_4)886 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_4_os_4) {
887 TransposeMicrokernelTester()
888 .input_stride(4)
889 .output_stride(4)
890 .block_width(4)
891 .block_height(2)
892 .element_size(3)
893 .iterations(1)
894 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
895 }
896
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_2_bw_4_is_8_os_4)897 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_2_bw_4_is_8_os_4) {
898 TransposeMicrokernelTester()
899 .input_stride(8)
900 .output_stride(4)
901 .block_width(4)
902 .block_height(2)
903 .element_size(3)
904 .iterations(1)
905 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
906 }
907
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_34_bw_76_ies_14)908 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_34_bw_76_ies_14) {
909 TransposeMicrokernelTester()
910 .input_stride(76)
911 .output_stride(34)
912 .block_width(76)
913 .block_height(34)
914 .element_size(3)
915 .input_element_stride(14)
916 .iterations(1)
917 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
918 }
919
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_6_bw_20_oes_14)920 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_6_bw_20_oes_14) {
921 TransposeMicrokernelTester()
922 .input_stride(20)
923 .output_stride(6)
924 .block_width(20)
925 .block_height(6)
926 .element_size(3)
927 .output_element_stride(14)
928 .iterations(1)
929 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
930 }
931
TEST(X24_TRANSPOSEC__2X4_SCALAR_3,bh_14_bw_92_ies_20_oes_16)932 TEST(X24_TRANSPOSEC__2X4_SCALAR_3, bh_14_bw_92_ies_20_oes_16) {
933 TransposeMicrokernelTester()
934 .input_stride(97)
935 .output_stride(20)
936 .block_width(92)
937 .block_height(14)
938 .element_size(3)
939 .input_element_stride(20)
940 .output_element_stride(16)
941 .iterations(1)
942 .Test(xnn_x24_transposec_ukernel__2x4_scalar);
943 }
944
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_1)945 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_1) {
946 TransposeMicrokernelTester()
947 .input_stride(2)
948 .output_stride(8)
949 .block_width(1)
950 .block_height(4)
951 .element_size(3)
952 .iterations(1)
953 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
954 }
955
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_1_8_bw_1_2)956 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_1_8_bw_1_2) {
957 for(size_t i = 1; i <= 8; ++i){
958 for(size_t j = 1; j <= 2; ++j){
959 TransposeMicrokernelTester()
960 .input_stride(j * 3)
961 .output_stride(i * 7)
962 .block_width(j)
963 .block_height(i)
964 .element_size(3)
965 .iterations(1)
966 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
967 }
968 }
969 }
970
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_2)971 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_2) {
972 TransposeMicrokernelTester()
973 .input_stride(2)
974 .output_stride(4)
975 .block_width(2)
976 .block_height(4)
977 .element_size(3)
978 .iterations(1)
979 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
980 }
981
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_2_2)982 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_2_2) {
983 for(size_t i = 2; i < 2; ++i){
984 TransposeMicrokernelTester()
985 .input_stride(i)
986 .output_stride(8)
987 .block_width(i)
988 .block_height(4)
989 .element_size(3)
990 .iterations(1)
991 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
992 }
993 }
994
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_8_bw_2_2)995 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_8_bw_2_2) {
996 for(size_t i = 2; i < 2; ++i){
997 TransposeMicrokernelTester()
998 .input_stride(i)
999 .output_stride(8)
1000 .block_width(i)
1001 .block_height(8)
1002 .element_size(3)
1003 .iterations(1)
1004 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1005 }
1006 }
1007
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_8_bw_1)1008 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_8_bw_1) {
1009 TransposeMicrokernelTester()
1010 .input_stride(1)
1011 .output_stride(16)
1012 .block_width(1)
1013 .block_height(8)
1014 .element_size(3)
1015 .iterations(1)
1016 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1017 }
1018
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_5_8_bw_1)1019 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_5_8_bw_1){
1020 for(size_t i = 5; i < 8; ++i){
1021 TransposeMicrokernelTester()
1022 .input_stride(18)
1023 .output_stride(i)
1024 .block_width(4)
1025 .block_height(i)
1026 .element_size(3)
1027 .iterations(1)
1028 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1029 }
1030 }
1031
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_5_8_bw_2)1032 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_5_8_bw_2){
1033 for(size_t i = 5; i < 8; ++i){
1034 TransposeMicrokernelTester()
1035 .input_stride(2)
1036 .output_stride(i)
1037 .block_width(2)
1038 .block_height(i)
1039 .element_size(3)
1040 .iterations(1)
1041 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1042 }
1043 }
1044
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_5_8_bw_2_2)1045 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_5_8_bw_2_2) {
1046 for(size_t i = 5; i < 8; ++i){
1047 for(size_t j = 2; j < 2; ++j){
1048 TransposeMicrokernelTester()
1049 .input_stride(j)
1050 .output_stride(i)
1051 .block_width(j)
1052 .block_height(i)
1053 .element_size(3)
1054 .iterations(1)
1055 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1056 }
1057 }
1058 }
1059
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_1_is_2)1060 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_1_is_2) {
1061 TransposeMicrokernelTester()
1062 .input_stride(2)
1063 .output_stride(4)
1064 .block_width(1)
1065 .block_height(4)
1066 .element_size(3)
1067 .iterations(1)
1068 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1069 }
1070
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_1_os_8)1071 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_1_os_8) {
1072 TransposeMicrokernelTester()
1073 .input_stride(1)
1074 .output_stride(8)
1075 .block_width(1)
1076 .block_height(4)
1077 .element_size(3)
1078 .iterations(1)
1079 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1080 }
1081
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_4_bw_1_is_2_os_8)1082 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_4_bw_1_is_2_os_8) {
1083 TransposeMicrokernelTester()
1084 .input_stride(2)
1085 .output_stride(8)
1086 .block_width(1)
1087 .block_height(4)
1088 .element_size(3)
1089 .iterations(1)
1090 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1091 }
1092
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_68_bw_19_ies_14)1093 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_68_bw_19_ies_14) {
1094 TransposeMicrokernelTester()
1095 .input_stride(19)
1096 .output_stride(68)
1097 .block_width(19)
1098 .block_height(68)
1099 .element_size(3)
1100 .input_element_stride(14)
1101 .iterations(1)
1102 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1103 }
1104
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_12_bw_5_oes_14)1105 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_12_bw_5_oes_14) {
1106 TransposeMicrokernelTester()
1107 .input_stride(5)
1108 .output_stride(12)
1109 .block_width(5)
1110 .block_height(12)
1111 .element_size(3)
1112 .output_element_stride(14)
1113 .iterations(1)
1114 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1115 }
1116
TEST(X24_TRANSPOSEC__4X1_SCALAR_3,bh_28_bw_23_ies_20_oes_16)1117 TEST(X24_TRANSPOSEC__4X1_SCALAR_3, bh_28_bw_23_ies_20_oes_16) {
1118 TransposeMicrokernelTester()
1119 .input_stride(28)
1120 .output_stride(34)
1121 .block_width(23)
1122 .block_height(28)
1123 .element_size(3)
1124 .input_element_stride(20)
1125 .output_element_stride(16)
1126 .iterations(1)
1127 .Test(xnn_x24_transposec_ukernel__4x1_scalar);
1128 }
1129
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_2)1130 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_2) {
1131 TransposeMicrokernelTester()
1132 .input_stride(4)
1133 .output_stride(8)
1134 .block_width(2)
1135 .block_height(4)
1136 .element_size(3)
1137 .iterations(1)
1138 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1139 }
1140
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_1_8_bw_1_4)1141 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_1_8_bw_1_4) {
1142 for(size_t i = 1; i <= 8; ++i){
1143 for(size_t j = 1; j <= 4; ++j){
1144 TransposeMicrokernelTester()
1145 .input_stride(j * 3)
1146 .output_stride(i * 7)
1147 .block_width(j)
1148 .block_height(i)
1149 .element_size(3)
1150 .iterations(1)
1151 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1152 }
1153 }
1154 }
1155
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_4)1156 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_4) {
1157 TransposeMicrokernelTester()
1158 .input_stride(4)
1159 .output_stride(4)
1160 .block_width(4)
1161 .block_height(4)
1162 .element_size(3)
1163 .iterations(1)
1164 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1165 }
1166
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_3_4)1167 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_3_4) {
1168 for(size_t i = 3; i < 4; ++i){
1169 TransposeMicrokernelTester()
1170 .input_stride(i)
1171 .output_stride(8)
1172 .block_width(i)
1173 .block_height(4)
1174 .element_size(3)
1175 .iterations(1)
1176 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1177 }
1178 }
1179
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_8_bw_3_4)1180 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_8_bw_3_4) {
1181 for(size_t i = 3; i < 4; ++i){
1182 TransposeMicrokernelTester()
1183 .input_stride(i)
1184 .output_stride(8)
1185 .block_width(i)
1186 .block_height(8)
1187 .element_size(3)
1188 .iterations(1)
1189 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1190 }
1191 }
1192
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_8_bw_2)1193 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_8_bw_2) {
1194 TransposeMicrokernelTester()
1195 .input_stride(2)
1196 .output_stride(16)
1197 .block_width(2)
1198 .block_height(8)
1199 .element_size(3)
1200 .iterations(1)
1201 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1202 }
1203
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_5_8_bw_2)1204 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_5_8_bw_2){
1205 for(size_t i = 5; i < 8; ++i){
1206 TransposeMicrokernelTester()
1207 .input_stride(19)
1208 .output_stride(i)
1209 .block_width(5)
1210 .block_height(i)
1211 .element_size(3)
1212 .iterations(1)
1213 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1214 }
1215 }
1216
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_5_8_bw_4)1217 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_5_8_bw_4){
1218 for(size_t i = 5; i < 8; ++i){
1219 TransposeMicrokernelTester()
1220 .input_stride(4)
1221 .output_stride(i)
1222 .block_width(4)
1223 .block_height(i)
1224 .element_size(3)
1225 .iterations(1)
1226 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1227 }
1228 }
1229
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_5_8_bw_3_4)1230 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_5_8_bw_3_4) {
1231 for(size_t i = 5; i < 8; ++i){
1232 for(size_t j = 3; j < 4; ++j){
1233 TransposeMicrokernelTester()
1234 .input_stride(j)
1235 .output_stride(i)
1236 .block_width(j)
1237 .block_height(i)
1238 .element_size(3)
1239 .iterations(1)
1240 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1241 }
1242 }
1243 }
1244
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_2_is_4)1245 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_2_is_4) {
1246 TransposeMicrokernelTester()
1247 .input_stride(4)
1248 .output_stride(4)
1249 .block_width(2)
1250 .block_height(4)
1251 .element_size(3)
1252 .iterations(1)
1253 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1254 }
1255
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_2_os_8)1256 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_2_os_8) {
1257 TransposeMicrokernelTester()
1258 .input_stride(2)
1259 .output_stride(8)
1260 .block_width(2)
1261 .block_height(4)
1262 .element_size(3)
1263 .iterations(1)
1264 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1265 }
1266
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_4_bw_2_is_4_os_8)1267 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_4_bw_2_is_4_os_8) {
1268 TransposeMicrokernelTester()
1269 .input_stride(4)
1270 .output_stride(8)
1271 .block_width(2)
1272 .block_height(4)
1273 .element_size(3)
1274 .iterations(1)
1275 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1276 }
1277
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_68_bw_38_ies_14)1278 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_68_bw_38_ies_14) {
1279 TransposeMicrokernelTester()
1280 .input_stride(38)
1281 .output_stride(68)
1282 .block_width(38)
1283 .block_height(68)
1284 .element_size(3)
1285 .input_element_stride(14)
1286 .iterations(1)
1287 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1288 }
1289
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_12_bw_10_oes_14)1290 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_12_bw_10_oes_14) {
1291 TransposeMicrokernelTester()
1292 .input_stride(10)
1293 .output_stride(12)
1294 .block_width(10)
1295 .block_height(12)
1296 .element_size(3)
1297 .output_element_stride(14)
1298 .iterations(1)
1299 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1300 }
1301
TEST(X24_TRANSPOSEC__4X2_SCALAR_3,bh_28_bw_46_ies_20_oes_16)1302 TEST(X24_TRANSPOSEC__4X2_SCALAR_3, bh_28_bw_46_ies_20_oes_16) {
1303 TransposeMicrokernelTester()
1304 .input_stride(51)
1305 .output_stride(34)
1306 .block_width(46)
1307 .block_height(28)
1308 .element_size(3)
1309 .input_element_stride(20)
1310 .output_element_stride(16)
1311 .iterations(1)
1312 .Test(xnn_x24_transposec_ukernel__4x2_scalar);
1313 }
1314
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_4)1315 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_4) {
1316 TransposeMicrokernelTester()
1317 .input_stride(8)
1318 .output_stride(8)
1319 .block_width(4)
1320 .block_height(4)
1321 .element_size(3)
1322 .iterations(1)
1323 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1324 }
1325
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_1_8_bw_1_8)1326 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_1_8_bw_1_8) {
1327 for(size_t i = 1; i <= 8; ++i){
1328 for(size_t j = 1; j <= 8; ++j){
1329 TransposeMicrokernelTester()
1330 .input_stride(j * 3)
1331 .output_stride(i * 7)
1332 .block_width(j)
1333 .block_height(i)
1334 .element_size(3)
1335 .iterations(1)
1336 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1337 }
1338 }
1339 }
1340
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_8)1341 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_8) {
1342 TransposeMicrokernelTester()
1343 .input_stride(8)
1344 .output_stride(4)
1345 .block_width(8)
1346 .block_height(4)
1347 .element_size(3)
1348 .iterations(1)
1349 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1350 }
1351
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_5_8)1352 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_5_8) {
1353 for(size_t i = 5; i < 8; ++i){
1354 TransposeMicrokernelTester()
1355 .input_stride(i)
1356 .output_stride(8)
1357 .block_width(i)
1358 .block_height(4)
1359 .element_size(3)
1360 .iterations(1)
1361 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1362 }
1363 }
1364
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_8_bw_5_8)1365 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_8_bw_5_8) {
1366 for(size_t i = 5; i < 8; ++i){
1367 TransposeMicrokernelTester()
1368 .input_stride(i)
1369 .output_stride(8)
1370 .block_width(i)
1371 .block_height(8)
1372 .element_size(3)
1373 .iterations(1)
1374 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1375 }
1376 }
1377
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_8_bw_4)1378 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_8_bw_4) {
1379 TransposeMicrokernelTester()
1380 .input_stride(4)
1381 .output_stride(16)
1382 .block_width(4)
1383 .block_height(8)
1384 .element_size(3)
1385 .iterations(1)
1386 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1387 }
1388
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_5_8_bw_4)1389 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_5_8_bw_4){
1390 for(size_t i = 5; i < 8; ++i){
1391 TransposeMicrokernelTester()
1392 .input_stride(21)
1393 .output_stride(i)
1394 .block_width(7)
1395 .block_height(i)
1396 .element_size(3)
1397 .iterations(1)
1398 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1399 }
1400 }
1401
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_5_8_bw_8)1402 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_5_8_bw_8){
1403 for(size_t i = 5; i < 8; ++i){
1404 TransposeMicrokernelTester()
1405 .input_stride(8)
1406 .output_stride(i)
1407 .block_width(8)
1408 .block_height(i)
1409 .element_size(3)
1410 .iterations(1)
1411 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1412 }
1413 }
1414
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_5_8_bw_5_8)1415 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_5_8_bw_5_8) {
1416 for(size_t i = 5; i < 8; ++i){
1417 for(size_t j = 5; j < 8; ++j){
1418 TransposeMicrokernelTester()
1419 .input_stride(j)
1420 .output_stride(i)
1421 .block_width(j)
1422 .block_height(i)
1423 .element_size(3)
1424 .iterations(1)
1425 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1426 }
1427 }
1428 }
1429
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_4_is_8)1430 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_4_is_8) {
1431 TransposeMicrokernelTester()
1432 .input_stride(8)
1433 .output_stride(4)
1434 .block_width(4)
1435 .block_height(4)
1436 .element_size(3)
1437 .iterations(1)
1438 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1439 }
1440
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_4_os_8)1441 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_4_os_8) {
1442 TransposeMicrokernelTester()
1443 .input_stride(4)
1444 .output_stride(8)
1445 .block_width(4)
1446 .block_height(4)
1447 .element_size(3)
1448 .iterations(1)
1449 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1450 }
1451
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_4_bw_4_is_8_os_8)1452 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_4_bw_4_is_8_os_8) {
1453 TransposeMicrokernelTester()
1454 .input_stride(8)
1455 .output_stride(8)
1456 .block_width(4)
1457 .block_height(4)
1458 .element_size(3)
1459 .iterations(1)
1460 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1461 }
1462
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_68_bw_76_ies_14)1463 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_68_bw_76_ies_14) {
1464 TransposeMicrokernelTester()
1465 .input_stride(76)
1466 .output_stride(68)
1467 .block_width(76)
1468 .block_height(68)
1469 .element_size(3)
1470 .input_element_stride(14)
1471 .iterations(1)
1472 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1473 }
1474
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_12_bw_20_oes_14)1475 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_12_bw_20_oes_14) {
1476 TransposeMicrokernelTester()
1477 .input_stride(20)
1478 .output_stride(12)
1479 .block_width(20)
1480 .block_height(12)
1481 .element_size(3)
1482 .output_element_stride(14)
1483 .iterations(1)
1484 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1485 }
1486
TEST(X24_TRANSPOSEC__4X4_SCALAR_3,bh_28_bw_92_ies_20_oes_16)1487 TEST(X24_TRANSPOSEC__4X4_SCALAR_3, bh_28_bw_92_ies_20_oes_16) {
1488 TransposeMicrokernelTester()
1489 .input_stride(97)
1490 .output_stride(34)
1491 .block_width(92)
1492 .block_height(28)
1493 .element_size(3)
1494 .input_element_stride(20)
1495 .output_element_stride(16)
1496 .iterations(1)
1497 .Test(xnn_x24_transposec_ukernel__4x4_scalar);
1498 }
1499
1500 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_2)1501 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_2) {
1502 TEST_REQUIRES_ARM_NEON;
1503 TransposeMicrokernelTester()
1504 .input_stride(4)
1505 .output_stride(4)
1506 .block_width(2)
1507 .block_height(2)
1508 .element_size(3)
1509 .iterations(1)
1510 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1511 }
1512
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_1_4_bw_1_4)1513 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_1_4_bw_1_4) {
1514 TEST_REQUIRES_ARM_NEON;
1515 for(size_t i = 1; i <= 4; ++i){
1516 for(size_t j = 1; j <= 4; ++j){
1517 TransposeMicrokernelTester()
1518 .input_stride(j * 3)
1519 .output_stride(i * 7)
1520 .block_width(j)
1521 .block_height(i)
1522 .element_size(3)
1523 .iterations(1)
1524 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1525 }
1526 }
1527 }
1528
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_4)1529 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_4) {
1530 TEST_REQUIRES_ARM_NEON;
1531 TransposeMicrokernelTester()
1532 .input_stride(4)
1533 .output_stride(2)
1534 .block_width(4)
1535 .block_height(2)
1536 .element_size(3)
1537 .iterations(1)
1538 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1539 }
1540
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_3_4)1541 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_3_4) {
1542 TEST_REQUIRES_ARM_NEON;
1543 for(size_t i = 3; i < 4; ++i){
1544 TransposeMicrokernelTester()
1545 .input_stride(i)
1546 .output_stride(4)
1547 .block_width(i)
1548 .block_height(2)
1549 .element_size(3)
1550 .iterations(1)
1551 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1552 }
1553 }
1554
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_4_bw_3_4)1555 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_4_bw_3_4) {
1556 TEST_REQUIRES_ARM_NEON;
1557 for(size_t i = 3; i < 4; ++i){
1558 TransposeMicrokernelTester()
1559 .input_stride(i)
1560 .output_stride(4)
1561 .block_width(i)
1562 .block_height(4)
1563 .element_size(3)
1564 .iterations(1)
1565 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1566 }
1567 }
1568
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_4_bw_2)1569 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_4_bw_2) {
1570 TEST_REQUIRES_ARM_NEON;
1571 TransposeMicrokernelTester()
1572 .input_stride(2)
1573 .output_stride(10)
1574 .block_width(2)
1575 .block_height(4)
1576 .element_size(3)
1577 .iterations(1)
1578 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1579 }
1580
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_3_4_bw_2)1581 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_3_4_bw_2){
1582 TEST_REQUIRES_ARM_NEON;
1583 for(size_t i = 3; i < 4; ++i){
1584 TransposeMicrokernelTester()
1585 .input_stride(19)
1586 .output_stride(i)
1587 .block_width(5)
1588 .block_height(i)
1589 .element_size(3)
1590 .iterations(1)
1591 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1592 }
1593 }
1594
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_3_4_bw_4)1595 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_3_4_bw_4){
1596 TEST_REQUIRES_ARM_NEON;
1597 for(size_t i = 3; i < 4; ++i){
1598 TransposeMicrokernelTester()
1599 .input_stride(4)
1600 .output_stride(i)
1601 .block_width(4)
1602 .block_height(i)
1603 .element_size(3)
1604 .iterations(1)
1605 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1606 }
1607 }
1608
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_3_4_bw_3_4)1609 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_3_4_bw_3_4) {
1610 TEST_REQUIRES_ARM_NEON;
1611 for(size_t i = 3; i < 4; ++i){
1612 for(size_t j = 3; j < 4; ++j){
1613 TransposeMicrokernelTester()
1614 .input_stride(j)
1615 .output_stride(i)
1616 .block_width(j)
1617 .block_height(i)
1618 .element_size(3)
1619 .iterations(1)
1620 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1621 }
1622 }
1623 }
1624
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_2_is_4)1625 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_2_is_4) {
1626 TEST_REQUIRES_ARM_NEON;
1627 TransposeMicrokernelTester()
1628 .input_stride(4)
1629 .output_stride(2)
1630 .block_width(2)
1631 .block_height(2)
1632 .element_size(3)
1633 .iterations(1)
1634 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1635 }
1636
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_2_os_4)1637 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_2_os_4) {
1638 TEST_REQUIRES_ARM_NEON;
1639 TransposeMicrokernelTester()
1640 .input_stride(2)
1641 .output_stride(4)
1642 .block_width(2)
1643 .block_height(2)
1644 .element_size(3)
1645 .iterations(1)
1646 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1647 }
1648
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_2_bw_2_is_4_os_4)1649 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_2_bw_2_is_4_os_4) {
1650 TEST_REQUIRES_ARM_NEON;
1651 TransposeMicrokernelTester()
1652 .input_stride(4)
1653 .output_stride(4)
1654 .block_width(2)
1655 .block_height(2)
1656 .element_size(3)
1657 .iterations(1)
1658 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1659 }
1660
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_34_bw_38_ies_14)1661 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_34_bw_38_ies_14) {
1662 TEST_REQUIRES_ARM_NEON;
1663 TransposeMicrokernelTester()
1664 .input_stride(38)
1665 .output_stride(34)
1666 .block_width(38)
1667 .block_height(34)
1668 .element_size(3)
1669 .input_element_stride(14)
1670 .iterations(1)
1671 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1672 }
1673
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_6_bw_10_oes_14)1674 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_6_bw_10_oes_14) {
1675 TEST_REQUIRES_ARM_NEON;
1676 TransposeMicrokernelTester()
1677 .input_stride(10)
1678 .output_stride(6)
1679 .block_width(10)
1680 .block_height(6)
1681 .element_size(3)
1682 .output_element_stride(14)
1683 .iterations(1)
1684 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1685 }
1686
TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3,bh_14_bw_46_ies_20_oes_16)1687 TEST(X24_TRANSPOSEC__2X2_NEON_TBL_3, bh_14_bw_46_ies_20_oes_16) {
1688 TEST_REQUIRES_ARM_NEON;
1689 TransposeMicrokernelTester()
1690 .input_stride(51)
1691 .output_stride(20)
1692 .block_width(46)
1693 .block_height(14)
1694 .element_size(3)
1695 .input_element_stride(20)
1696 .output_element_stride(16)
1697 .iterations(1)
1698 .Test(xnn_x24_transposec_ukernel__2x2_neon_tbl);
1699 }
1700 #endif // XNN_ARCH_ARM || XNN_ARCH_ARM64
1701
1702
1703 #if XNN_ARCH_ARM64
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_4)1704 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_4) {
1705 TEST_REQUIRES_ARM_NEON;
1706 TransposeMicrokernelTester()
1707 .input_stride(8)
1708 .output_stride(8)
1709 .block_width(4)
1710 .block_height(4)
1711 .element_size(3)
1712 .iterations(1)
1713 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1714 }
1715
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_1_8_bw_1_8)1716 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_1_8_bw_1_8) {
1717 TEST_REQUIRES_ARM_NEON;
1718 for(size_t i = 1; i <= 8; ++i){
1719 for(size_t j = 1; j <= 8; ++j){
1720 TransposeMicrokernelTester()
1721 .input_stride(j * 3)
1722 .output_stride(i * 7)
1723 .block_width(j)
1724 .block_height(i)
1725 .element_size(3)
1726 .iterations(1)
1727 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1728 }
1729 }
1730 }
1731
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_8)1732 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_8) {
1733 TEST_REQUIRES_ARM_NEON;
1734 TransposeMicrokernelTester()
1735 .input_stride(8)
1736 .output_stride(4)
1737 .block_width(8)
1738 .block_height(4)
1739 .element_size(3)
1740 .iterations(1)
1741 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1742 }
1743
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_5_8)1744 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_5_8) {
1745 TEST_REQUIRES_ARM_NEON;
1746 for(size_t i = 5; i < 8; ++i){
1747 TransposeMicrokernelTester()
1748 .input_stride(i)
1749 .output_stride(8)
1750 .block_width(i)
1751 .block_height(4)
1752 .element_size(3)
1753 .iterations(1)
1754 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1755 }
1756 }
1757
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_8_bw_5_8)1758 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_8_bw_5_8) {
1759 TEST_REQUIRES_ARM_NEON;
1760 for(size_t i = 5; i < 8; ++i){
1761 TransposeMicrokernelTester()
1762 .input_stride(i)
1763 .output_stride(8)
1764 .block_width(i)
1765 .block_height(8)
1766 .element_size(3)
1767 .iterations(1)
1768 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1769 }
1770 }
1771
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_8_bw_4)1772 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_8_bw_4) {
1773 TEST_REQUIRES_ARM_NEON;
1774 TransposeMicrokernelTester()
1775 .input_stride(4)
1776 .output_stride(16)
1777 .block_width(4)
1778 .block_height(8)
1779 .element_size(3)
1780 .iterations(1)
1781 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1782 }
1783
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_5_8_bw_4)1784 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_5_8_bw_4){
1785 TEST_REQUIRES_ARM_NEON;
1786 for(size_t i = 5; i < 8; ++i){
1787 TransposeMicrokernelTester()
1788 .input_stride(21)
1789 .output_stride(i)
1790 .block_width(7)
1791 .block_height(i)
1792 .element_size(3)
1793 .iterations(1)
1794 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1795 }
1796 }
1797
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_5_8_bw_8)1798 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_5_8_bw_8){
1799 TEST_REQUIRES_ARM_NEON;
1800 for(size_t i = 5; i < 8; ++i){
1801 TransposeMicrokernelTester()
1802 .input_stride(8)
1803 .output_stride(i)
1804 .block_width(8)
1805 .block_height(i)
1806 .element_size(3)
1807 .iterations(1)
1808 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1809 }
1810 }
1811
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_5_8_bw_5_8)1812 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_5_8_bw_5_8) {
1813 TEST_REQUIRES_ARM_NEON;
1814 for(size_t i = 5; i < 8; ++i){
1815 for(size_t j = 5; j < 8; ++j){
1816 TransposeMicrokernelTester()
1817 .input_stride(j)
1818 .output_stride(i)
1819 .block_width(j)
1820 .block_height(i)
1821 .element_size(3)
1822 .iterations(1)
1823 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1824 }
1825 }
1826 }
1827
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_4_is_8)1828 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_4_is_8) {
1829 TEST_REQUIRES_ARM_NEON;
1830 TransposeMicrokernelTester()
1831 .input_stride(8)
1832 .output_stride(4)
1833 .block_width(4)
1834 .block_height(4)
1835 .element_size(3)
1836 .iterations(1)
1837 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1838 }
1839
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_4_os_8)1840 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_4_os_8) {
1841 TEST_REQUIRES_ARM_NEON;
1842 TransposeMicrokernelTester()
1843 .input_stride(4)
1844 .output_stride(8)
1845 .block_width(4)
1846 .block_height(4)
1847 .element_size(3)
1848 .iterations(1)
1849 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1850 }
1851
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_4_bw_4_is_8_os_8)1852 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_4_bw_4_is_8_os_8) {
1853 TEST_REQUIRES_ARM_NEON;
1854 TransposeMicrokernelTester()
1855 .input_stride(8)
1856 .output_stride(8)
1857 .block_width(4)
1858 .block_height(4)
1859 .element_size(3)
1860 .iterations(1)
1861 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1862 }
1863
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_68_bw_76_ies_14)1864 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_68_bw_76_ies_14) {
1865 TEST_REQUIRES_ARM_NEON;
1866 TransposeMicrokernelTester()
1867 .input_stride(76)
1868 .output_stride(68)
1869 .block_width(76)
1870 .block_height(68)
1871 .element_size(3)
1872 .input_element_stride(14)
1873 .iterations(1)
1874 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1875 }
1876
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_12_bw_20_oes_14)1877 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_12_bw_20_oes_14) {
1878 TEST_REQUIRES_ARM_NEON;
1879 TransposeMicrokernelTester()
1880 .input_stride(20)
1881 .output_stride(12)
1882 .block_width(20)
1883 .block_height(12)
1884 .element_size(3)
1885 .output_element_stride(14)
1886 .iterations(1)
1887 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1888 }
1889
TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3,bh_28_bw_92_ies_20_oes_16)1890 TEST(X24_TRANSPOSEC__4X4_AARCH64_NEON_TBL_3, bh_28_bw_92_ies_20_oes_16) {
1891 TEST_REQUIRES_ARM_NEON;
1892 TransposeMicrokernelTester()
1893 .input_stride(97)
1894 .output_stride(34)
1895 .block_width(92)
1896 .block_height(28)
1897 .element_size(3)
1898 .input_element_stride(20)
1899 .output_element_stride(16)
1900 .iterations(1)
1901 .Test(xnn_x24_transposec_ukernel__4x4_aarch64_neon_tbl);
1902 }
1903 #endif // XNN_ARCH_ARM64
1904
1905
1906 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_4)1907 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_4) {
1908 TEST_REQUIRES_X86_SSSE3;
1909 TransposeMicrokernelTester()
1910 .input_stride(8)
1911 .output_stride(8)
1912 .block_width(4)
1913 .block_height(4)
1914 .element_size(3)
1915 .iterations(1)
1916 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1917 }
1918
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_1_8_bw_1_8)1919 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_1_8_bw_1_8) {
1920 TEST_REQUIRES_X86_SSSE3;
1921 for(size_t i = 1; i <= 8; ++i){
1922 for(size_t j = 1; j <= 8; ++j){
1923 TransposeMicrokernelTester()
1924 .input_stride(j * 3)
1925 .output_stride(i * 7)
1926 .block_width(j)
1927 .block_height(i)
1928 .element_size(3)
1929 .iterations(1)
1930 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1931 }
1932 }
1933 }
1934
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_8)1935 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_8) {
1936 TEST_REQUIRES_X86_SSSE3;
1937 TransposeMicrokernelTester()
1938 .input_stride(8)
1939 .output_stride(4)
1940 .block_width(8)
1941 .block_height(4)
1942 .element_size(3)
1943 .iterations(1)
1944 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1945 }
1946
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_5_8)1947 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_5_8) {
1948 TEST_REQUIRES_X86_SSSE3;
1949 for(size_t i = 5; i < 8; ++i){
1950 TransposeMicrokernelTester()
1951 .input_stride(i)
1952 .output_stride(8)
1953 .block_width(i)
1954 .block_height(4)
1955 .element_size(3)
1956 .iterations(1)
1957 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1958 }
1959 }
1960
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_8_bw_5_8)1961 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_8_bw_5_8) {
1962 TEST_REQUIRES_X86_SSSE3;
1963 for(size_t i = 5; i < 8; ++i){
1964 TransposeMicrokernelTester()
1965 .input_stride(i)
1966 .output_stride(8)
1967 .block_width(i)
1968 .block_height(8)
1969 .element_size(3)
1970 .iterations(1)
1971 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1972 }
1973 }
1974
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_8_bw_4)1975 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_8_bw_4) {
1976 TEST_REQUIRES_X86_SSSE3;
1977 TransposeMicrokernelTester()
1978 .input_stride(4)
1979 .output_stride(16)
1980 .block_width(4)
1981 .block_height(8)
1982 .element_size(3)
1983 .iterations(1)
1984 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1985 }
1986
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_5_8_bw_4)1987 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_5_8_bw_4){
1988 TEST_REQUIRES_X86_SSSE3;
1989 for(size_t i = 5; i < 8; ++i){
1990 TransposeMicrokernelTester()
1991 .input_stride(21)
1992 .output_stride(i)
1993 .block_width(7)
1994 .block_height(i)
1995 .element_size(3)
1996 .iterations(1)
1997 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
1998 }
1999 }
2000
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_5_8_bw_8)2001 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_5_8_bw_8){
2002 TEST_REQUIRES_X86_SSSE3;
2003 for(size_t i = 5; i < 8; ++i){
2004 TransposeMicrokernelTester()
2005 .input_stride(8)
2006 .output_stride(i)
2007 .block_width(8)
2008 .block_height(i)
2009 .element_size(3)
2010 .iterations(1)
2011 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2012 }
2013 }
2014
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_5_8_bw_5_8)2015 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_5_8_bw_5_8) {
2016 TEST_REQUIRES_X86_SSSE3;
2017 for(size_t i = 5; i < 8; ++i){
2018 for(size_t j = 5; j < 8; ++j){
2019 TransposeMicrokernelTester()
2020 .input_stride(j)
2021 .output_stride(i)
2022 .block_width(j)
2023 .block_height(i)
2024 .element_size(3)
2025 .iterations(1)
2026 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2027 }
2028 }
2029 }
2030
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_4_is_8)2031 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_4_is_8) {
2032 TEST_REQUIRES_X86_SSSE3;
2033 TransposeMicrokernelTester()
2034 .input_stride(8)
2035 .output_stride(4)
2036 .block_width(4)
2037 .block_height(4)
2038 .element_size(3)
2039 .iterations(1)
2040 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2041 }
2042
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_4_os_8)2043 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_4_os_8) {
2044 TEST_REQUIRES_X86_SSSE3;
2045 TransposeMicrokernelTester()
2046 .input_stride(4)
2047 .output_stride(8)
2048 .block_width(4)
2049 .block_height(4)
2050 .element_size(3)
2051 .iterations(1)
2052 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2053 }
2054
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_4_bw_4_is_8_os_8)2055 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_4_bw_4_is_8_os_8) {
2056 TEST_REQUIRES_X86_SSSE3;
2057 TransposeMicrokernelTester()
2058 .input_stride(8)
2059 .output_stride(8)
2060 .block_width(4)
2061 .block_height(4)
2062 .element_size(3)
2063 .iterations(1)
2064 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2065 }
2066
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_68_bw_76_ies_14)2067 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_68_bw_76_ies_14) {
2068 TEST_REQUIRES_X86_SSSE3;
2069 TransposeMicrokernelTester()
2070 .input_stride(76)
2071 .output_stride(68)
2072 .block_width(76)
2073 .block_height(68)
2074 .element_size(3)
2075 .input_element_stride(14)
2076 .iterations(1)
2077 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2078 }
2079
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_12_bw_20_oes_14)2080 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_12_bw_20_oes_14) {
2081 TEST_REQUIRES_X86_SSSE3;
2082 TransposeMicrokernelTester()
2083 .input_stride(20)
2084 .output_stride(12)
2085 .block_width(20)
2086 .block_height(12)
2087 .element_size(3)
2088 .output_element_stride(14)
2089 .iterations(1)
2090 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2091 }
2092
TEST(X24_TRANSPOSEC__4X4_SSSE3_3,bh_28_bw_92_ies_20_oes_16)2093 TEST(X24_TRANSPOSEC__4X4_SSSE3_3, bh_28_bw_92_ies_20_oes_16) {
2094 TEST_REQUIRES_X86_SSSE3;
2095 TransposeMicrokernelTester()
2096 .input_stride(97)
2097 .output_stride(34)
2098 .block_width(92)
2099 .block_height(28)
2100 .element_size(3)
2101 .input_element_stride(20)
2102 .output_element_stride(16)
2103 .iterations(1)
2104 .Test(xnn_x24_transposec_ukernel__4x4_ssse3);
2105 }
2106 #endif // XNN_ARCH_X86 || XNN_ARCH_X86_64
2107