xref: /aosp_15_r20/external/XNNPACK/test/transpose-nd.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
2*4bdc9457SAndroid Build Coastguard Worker 
3*4bdc9457SAndroid Build Coastguard Worker #include <algorithm>
4*4bdc9457SAndroid Build Coastguard Worker 
5*4bdc9457SAndroid Build Coastguard Worker #include "transpose-operator-tester.h"
6*4bdc9457SAndroid Build Coastguard Worker 
7*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32_2, 1D_redundant_dim) {
8*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
9*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
10*4bdc9457SAndroid Build Coastguard Worker       .shape({1})
11*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
12*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
13*4bdc9457SAndroid Build Coastguard Worker }
14*4bdc9457SAndroid Build Coastguard Worker 
15*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 1D) {
16*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
17*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
18*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
19*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
20*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
21*4bdc9457SAndroid Build Coastguard Worker }
22*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run1D)23*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run1D) {
24*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
25*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
26*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
27*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
28*4bdc9457SAndroid Build Coastguard Worker       .TestRunX8();
29*4bdc9457SAndroid Build Coastguard Worker }
30*4bdc9457SAndroid Build Coastguard Worker 
31*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 2D) {
32*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
33*4bdc9457SAndroid Build Coastguard Worker   do {
34*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
35*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
36*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
37*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
38*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
39*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
40*4bdc9457SAndroid Build Coastguard Worker }
41*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run2D)42*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run2D) {
43*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
44*4bdc9457SAndroid Build Coastguard Worker   do {
45*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
46*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
47*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
48*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
49*4bdc9457SAndroid Build Coastguard Worker         .TestRunX8();
50*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
51*4bdc9457SAndroid Build Coastguard Worker }
52*4bdc9457SAndroid Build Coastguard Worker 
53*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 3D) {
54*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
55*4bdc9457SAndroid Build Coastguard Worker   do {
56*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
57*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
58*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
59*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
60*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
61*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
62*4bdc9457SAndroid Build Coastguard Worker }
63*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run3D)64*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run3D) {
65*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
66*4bdc9457SAndroid Build Coastguard Worker   do {
67*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
68*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
69*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
70*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
71*4bdc9457SAndroid Build Coastguard Worker         .TestRunX8();
72*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
73*4bdc9457SAndroid Build Coastguard Worker }
74*4bdc9457SAndroid Build Coastguard Worker 
75*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 4D_copy) {
76*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
77*4bdc9457SAndroid Build Coastguard Worker       .num_dims(4)
78*4bdc9457SAndroid Build Coastguard Worker       .shape({2,2,1,1})
79*4bdc9457SAndroid Build Coastguard Worker       .perm({0,2,3,1})
80*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
81*4bdc9457SAndroid Build Coastguard Worker }
82*4bdc9457SAndroid Build Coastguard Worker 
83*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 4D) {
84*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
85*4bdc9457SAndroid Build Coastguard Worker   do {
86*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
87*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
88*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
89*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
90*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
91*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
92*4bdc9457SAndroid Build Coastguard Worker }
93*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run4D)94*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run4D) {
95*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
96*4bdc9457SAndroid Build Coastguard Worker   do {
97*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
98*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
99*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
100*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
101*4bdc9457SAndroid Build Coastguard Worker         .TestRunX8();
102*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
103*4bdc9457SAndroid Build Coastguard Worker }
104*4bdc9457SAndroid Build Coastguard Worker 
105*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 5D) {
106*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
107*4bdc9457SAndroid Build Coastguard Worker   do {
108*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
109*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
110*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
111*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
112*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
113*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
114*4bdc9457SAndroid Build Coastguard Worker }
115*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run5D)116*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run5D) {
117*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
118*4bdc9457SAndroid Build Coastguard Worker   do {
119*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
120*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
121*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
122*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
123*4bdc9457SAndroid Build Coastguard Worker         .TestRunX8();
124*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
125*4bdc9457SAndroid Build Coastguard Worker }
126*4bdc9457SAndroid Build Coastguard Worker 
127*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, 6D) {
128*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
129*4bdc9457SAndroid Build Coastguard Worker   do {
130*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
131*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
132*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
133*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
134*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
135*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
136*4bdc9457SAndroid Build Coastguard Worker }
137*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X8,Run6D)138*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X8, Run6D) {
139*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
140*4bdc9457SAndroid Build Coastguard Worker   do {
141*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
142*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
143*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
144*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
145*4bdc9457SAndroid Build Coastguard Worker         .TestRunX8();
146*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
147*4bdc9457SAndroid Build Coastguard Worker }
148*4bdc9457SAndroid Build Coastguard Worker 
149*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 1D) {
150*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
151*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
152*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
153*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
154*4bdc9457SAndroid Build Coastguard Worker       .TestX16();
155*4bdc9457SAndroid Build Coastguard Worker }
156*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run1D)157*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run1D) {
158*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
159*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
160*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
161*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
162*4bdc9457SAndroid Build Coastguard Worker       .TestRunX16();
163*4bdc9457SAndroid Build Coastguard Worker }
164*4bdc9457SAndroid Build Coastguard Worker 
165*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 2D) {
166*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
167*4bdc9457SAndroid Build Coastguard Worker   do {
168*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
169*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
170*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
171*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
172*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
173*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
174*4bdc9457SAndroid Build Coastguard Worker }
175*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run2D)176*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run2D) {
177*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
178*4bdc9457SAndroid Build Coastguard Worker   do {
179*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
180*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
181*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
182*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
183*4bdc9457SAndroid Build Coastguard Worker         .TestRunX16();
184*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
185*4bdc9457SAndroid Build Coastguard Worker }
186*4bdc9457SAndroid Build Coastguard Worker 
187*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 3D) {
188*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
189*4bdc9457SAndroid Build Coastguard Worker   do {
190*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
191*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
192*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
193*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
194*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
195*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
196*4bdc9457SAndroid Build Coastguard Worker }
197*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run3D)198*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run3D) {
199*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
200*4bdc9457SAndroid Build Coastguard Worker   do {
201*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
202*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
203*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
204*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
205*4bdc9457SAndroid Build Coastguard Worker         .TestRunX16();
206*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
207*4bdc9457SAndroid Build Coastguard Worker }
208*4bdc9457SAndroid Build Coastguard Worker 
209*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 4D) {
210*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
211*4bdc9457SAndroid Build Coastguard Worker   do {
212*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
213*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
214*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
215*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
216*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
217*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
218*4bdc9457SAndroid Build Coastguard Worker }
219*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run4D)220*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run4D) {
221*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
222*4bdc9457SAndroid Build Coastguard Worker   do {
223*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
224*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
225*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
226*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
227*4bdc9457SAndroid Build Coastguard Worker         .TestRunX16();
228*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
229*4bdc9457SAndroid Build Coastguard Worker }
230*4bdc9457SAndroid Build Coastguard Worker 
231*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 5D) {
232*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
233*4bdc9457SAndroid Build Coastguard Worker   do {
234*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
235*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
236*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
237*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
238*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
239*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
240*4bdc9457SAndroid Build Coastguard Worker }
241*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run5D)242*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run5D) {
243*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
244*4bdc9457SAndroid Build Coastguard Worker   do {
245*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
246*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
247*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
248*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
249*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
250*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
251*4bdc9457SAndroid Build Coastguard Worker }
252*4bdc9457SAndroid Build Coastguard Worker 
253*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, 6D) {
254*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
255*4bdc9457SAndroid Build Coastguard Worker   do {
256*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
257*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
258*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
259*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
260*4bdc9457SAndroid Build Coastguard Worker         .TestX16();
261*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
262*4bdc9457SAndroid Build Coastguard Worker }
263*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X16,Run6D)264*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X16, Run6D) {
265*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
266*4bdc9457SAndroid Build Coastguard Worker   do {
267*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
268*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
269*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
270*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
271*4bdc9457SAndroid Build Coastguard Worker         .TestRunX16();
272*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
273*4bdc9457SAndroid Build Coastguard Worker }
274*4bdc9457SAndroid Build Coastguard Worker 
275*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 1D) {
276*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
277*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
278*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
279*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
280*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
281*4bdc9457SAndroid Build Coastguard Worker }
282*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run1D)283*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run1D) {
284*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
285*4bdc9457SAndroid Build Coastguard Worker       .num_dims(1)
286*4bdc9457SAndroid Build Coastguard Worker       .shape({713})
287*4bdc9457SAndroid Build Coastguard Worker       .perm({0})
288*4bdc9457SAndroid Build Coastguard Worker       .TestRunX32();
289*4bdc9457SAndroid Build Coastguard Worker }
290*4bdc9457SAndroid Build Coastguard Worker 
291*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 2D_all_dimensions_redundant) {
292*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
293*4bdc9457SAndroid Build Coastguard Worker       .num_dims(2)
294*4bdc9457SAndroid Build Coastguard Worker       .shape({1, 1})
295*4bdc9457SAndroid Build Coastguard Worker       .perm({1, 0})
296*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
297*4bdc9457SAndroid Build Coastguard Worker }
298*4bdc9457SAndroid Build Coastguard Worker 
299*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 2D) {
300*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
301*4bdc9457SAndroid Build Coastguard Worker   do {
302*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
303*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
304*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
305*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
306*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
307*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
308*4bdc9457SAndroid Build Coastguard Worker }
309*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run2D)310*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run2D) {
311*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1};
312*4bdc9457SAndroid Build Coastguard Worker   do {
313*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
314*4bdc9457SAndroid Build Coastguard Worker         .num_dims(2)
315*4bdc9457SAndroid Build Coastguard Worker         .shape({37, 113})
316*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
317*4bdc9457SAndroid Build Coastguard Worker         .TestRunX32();
318*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
319*4bdc9457SAndroid Build Coastguard Worker }
320*4bdc9457SAndroid Build Coastguard Worker 
321*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 3D_redundant_dimension) {
322*4bdc9457SAndroid Build Coastguard Worker   TransposeOperatorTester()
323*4bdc9457SAndroid Build Coastguard Worker       .num_dims(3)
324*4bdc9457SAndroid Build Coastguard Worker       .shape({2, 1, 3})
325*4bdc9457SAndroid Build Coastguard Worker       .perm({0, 2, 1})
326*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
327*4bdc9457SAndroid Build Coastguard Worker }
328*4bdc9457SAndroid Build Coastguard Worker 
329*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 3D) {
330*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
331*4bdc9457SAndroid Build Coastguard Worker   do {
332*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
333*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
334*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
335*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
336*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
337*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
338*4bdc9457SAndroid Build Coastguard Worker }
339*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run3D)340*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run3D) {
341*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2};
342*4bdc9457SAndroid Build Coastguard Worker   do {
343*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
344*4bdc9457SAndroid Build Coastguard Worker         .num_dims(3)
345*4bdc9457SAndroid Build Coastguard Worker         .shape({5, 7, 11})
346*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
347*4bdc9457SAndroid Build Coastguard Worker         .TestRunX32();
348*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
349*4bdc9457SAndroid Build Coastguard Worker }
350*4bdc9457SAndroid Build Coastguard Worker 
351*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 4D) {
352*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
353*4bdc9457SAndroid Build Coastguard Worker   do {
354*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
355*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
356*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
357*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
358*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
359*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
360*4bdc9457SAndroid Build Coastguard Worker }
361*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run4D)362*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run4D) {
363*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3};
364*4bdc9457SAndroid Build Coastguard Worker   do {
365*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
366*4bdc9457SAndroid Build Coastguard Worker         .num_dims(4)
367*4bdc9457SAndroid Build Coastguard Worker         .shape({5,7,11,13})
368*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
369*4bdc9457SAndroid Build Coastguard Worker         .TestRunX32();
370*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
371*4bdc9457SAndroid Build Coastguard Worker }
372*4bdc9457SAndroid Build Coastguard Worker 
373*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 5D) {
374*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
375*4bdc9457SAndroid Build Coastguard Worker   do {
376*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
377*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
378*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
379*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
380*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
381*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
382*4bdc9457SAndroid Build Coastguard Worker }
383*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run5D)384*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run5D) {
385*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4};
386*4bdc9457SAndroid Build Coastguard Worker   do {
387*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
388*4bdc9457SAndroid Build Coastguard Worker         .num_dims(5)
389*4bdc9457SAndroid Build Coastguard Worker         .shape({3,5,7,11,13})
390*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
391*4bdc9457SAndroid Build Coastguard Worker         .TestRunX32();
392*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
393*4bdc9457SAndroid Build Coastguard Worker }
394*4bdc9457SAndroid Build Coastguard Worker 
395*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 6D) {
396*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
397*4bdc9457SAndroid Build Coastguard Worker   do {
398*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
399*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
400*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
401*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
402*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
403*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
404*4bdc9457SAndroid Build Coastguard Worker }
405*4bdc9457SAndroid Build Coastguard Worker 
TEST(TRANSPOSE_ND_X32,Run6D)406*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, Run6D) {
407*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
408*4bdc9457SAndroid Build Coastguard Worker   do {
409*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
410*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
411*4bdc9457SAndroid Build Coastguard Worker         .shape({2,3,5,7,11,13})
412*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
413*4bdc9457SAndroid Build Coastguard Worker         .TestRunX32();
414*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
415*4bdc9457SAndroid Build Coastguard Worker }
416*4bdc9457SAndroid Build Coastguard Worker 
417*4bdc9457SAndroid Build Coastguard Worker TEST(TRANSPOSE_ND_X32, 6D_DIMS_1) {
418*4bdc9457SAndroid Build Coastguard Worker   std::vector<size_t> perm{0,1,2,3,4,5};
419*4bdc9457SAndroid Build Coastguard Worker   do {
420*4bdc9457SAndroid Build Coastguard Worker     TransposeOperatorTester()
421*4bdc9457SAndroid Build Coastguard Worker         .num_dims(6)
422*4bdc9457SAndroid Build Coastguard Worker         .shape({1,1,1,2,3,4})
423*4bdc9457SAndroid Build Coastguard Worker         .perm(perm)
424*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
425*4bdc9457SAndroid Build Coastguard Worker   } while (std::next_permutation(perm.begin(), perm.end()));
426*4bdc9457SAndroid Build Coastguard Worker }
427