xref: /aosp_15_r20/external/XNNPACK/test/x24-transpose.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
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