xref: /aosp_15_r20/external/XNNPACK/test/channel-shuffle-nc.cc (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1*4bdc9457SAndroid Build Coastguard Worker // Copyright (c) Facebook, Inc. and its affiliates.
2*4bdc9457SAndroid Build Coastguard Worker // All rights reserved.
3*4bdc9457SAndroid Build Coastguard Worker //
4*4bdc9457SAndroid Build Coastguard Worker // Copyright 2019 Google LLC
5*4bdc9457SAndroid Build Coastguard Worker //
6*4bdc9457SAndroid Build Coastguard Worker // This source code is licensed under the BSD-style license found in the
7*4bdc9457SAndroid Build Coastguard Worker // LICENSE file in the root directory of this source tree.
8*4bdc9457SAndroid Build Coastguard Worker 
9*4bdc9457SAndroid Build Coastguard Worker #include <gtest/gtest.h>
10*4bdc9457SAndroid Build Coastguard Worker 
11*4bdc9457SAndroid Build Coastguard Worker #include "channel-shuffle-operator-tester.h"
12*4bdc9457SAndroid Build Coastguard Worker 
13*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,two_groups_unit_batch)14*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, two_groups_unit_batch) {
15*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
16*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
17*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
18*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
19*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
20*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
21*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
22*4bdc9457SAndroid Build Coastguard Worker   }
23*4bdc9457SAndroid Build Coastguard Worker }
24*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,three_groups_unit_batch)25*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, three_groups_unit_batch) {
26*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
27*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
28*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
29*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
30*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
31*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
32*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
33*4bdc9457SAndroid Build Coastguard Worker   }
34*4bdc9457SAndroid Build Coastguard Worker }
35*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,four_groups_unit_batch)36*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, four_groups_unit_batch) {
37*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
38*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
39*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
40*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
41*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
42*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
43*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
44*4bdc9457SAndroid Build Coastguard Worker   }
45*4bdc9457SAndroid Build Coastguard Worker }
46*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,many_groups_unit_batch)47*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, many_groups_unit_batch) {
48*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
49*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
50*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
51*4bdc9457SAndroid Build Coastguard Worker         .batch_size(1)
52*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
53*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
54*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
55*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
56*4bdc9457SAndroid Build Coastguard Worker     }
57*4bdc9457SAndroid Build Coastguard Worker   }
58*4bdc9457SAndroid Build Coastguard Worker }
59*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,two_groups_small_batch)60*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, two_groups_small_batch) {
61*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
62*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
63*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
64*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
65*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
66*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
67*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
68*4bdc9457SAndroid Build Coastguard Worker   }
69*4bdc9457SAndroid Build Coastguard Worker }
70*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,three_groups_small_batch)71*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, three_groups_small_batch) {
72*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
73*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
74*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
75*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
76*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
77*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
78*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
79*4bdc9457SAndroid Build Coastguard Worker   }
80*4bdc9457SAndroid Build Coastguard Worker }
81*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,four_groups_small_batch)82*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, four_groups_small_batch) {
83*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
84*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
85*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
86*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
87*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
88*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
89*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
90*4bdc9457SAndroid Build Coastguard Worker   }
91*4bdc9457SAndroid Build Coastguard Worker }
92*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,many_groups_small_batch)93*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, many_groups_small_batch) {
94*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
95*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
96*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
97*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
98*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
99*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
100*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
101*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
102*4bdc9457SAndroid Build Coastguard Worker     }
103*4bdc9457SAndroid Build Coastguard Worker   }
104*4bdc9457SAndroid Build Coastguard Worker }
105*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,two_groups_small_batch_with_input_stride)106*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, two_groups_small_batch_with_input_stride) {
107*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
108*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
109*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
110*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
111*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
112*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
113*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
114*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
115*4bdc9457SAndroid Build Coastguard Worker   }
116*4bdc9457SAndroid Build Coastguard Worker }
117*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,three_groups_small_batch_with_input_stride)118*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, three_groups_small_batch_with_input_stride) {
119*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
120*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
121*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
122*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
123*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
124*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
125*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
126*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
127*4bdc9457SAndroid Build Coastguard Worker   }
128*4bdc9457SAndroid Build Coastguard Worker }
129*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,four_groups_small_batch_with_input_stride)130*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, four_groups_small_batch_with_input_stride) {
131*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
132*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
133*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
134*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
135*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
136*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
137*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
138*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
139*4bdc9457SAndroid Build Coastguard Worker   }
140*4bdc9457SAndroid Build Coastguard Worker }
141*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,many_groups_small_batch_with_input_stride)142*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, many_groups_small_batch_with_input_stride) {
143*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
144*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
145*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
146*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
147*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
148*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
149*4bdc9457SAndroid Build Coastguard Worker         .input_stride(1007)
150*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
151*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
152*4bdc9457SAndroid Build Coastguard Worker     }
153*4bdc9457SAndroid Build Coastguard Worker   }
154*4bdc9457SAndroid Build Coastguard Worker }
155*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,two_groups_small_batch_with_output_stride)156*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, two_groups_small_batch_with_output_stride) {
157*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
158*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
159*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
160*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
161*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
162*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
163*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
164*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
165*4bdc9457SAndroid Build Coastguard Worker   }
166*4bdc9457SAndroid Build Coastguard Worker }
167*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,three_groups_small_batch_with_output_stride)168*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, three_groups_small_batch_with_output_stride) {
169*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
170*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
171*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
172*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
173*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
174*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
175*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
176*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
177*4bdc9457SAndroid Build Coastguard Worker   }
178*4bdc9457SAndroid Build Coastguard Worker }
179*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,four_groups_small_batch_with_output_stride)180*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, four_groups_small_batch_with_output_stride) {
181*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
182*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
183*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
184*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
185*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
186*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
187*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
188*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
189*4bdc9457SAndroid Build Coastguard Worker   }
190*4bdc9457SAndroid Build Coastguard Worker }
191*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,many_groups_small_batch_with_output_stride)192*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, many_groups_small_batch_with_output_stride) {
193*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
194*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
195*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
196*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
197*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
198*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
199*4bdc9457SAndroid Build Coastguard Worker         .output_stride(1111)
200*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
201*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
202*4bdc9457SAndroid Build Coastguard Worker     }
203*4bdc9457SAndroid Build Coastguard Worker   }
204*4bdc9457SAndroid Build Coastguard Worker }
205*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,two_groups_small_batch_with_input_and_output_stride)206*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, two_groups_small_batch_with_input_and_output_stride) {
207*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
208*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
209*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
210*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
211*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
212*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
213*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
214*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
215*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
216*4bdc9457SAndroid Build Coastguard Worker   }
217*4bdc9457SAndroid Build Coastguard Worker }
218*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,three_groups_small_batch_with_input_and_output_stride)219*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, three_groups_small_batch_with_input_and_output_stride) {
220*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
221*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
222*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
223*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
224*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
225*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
226*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
227*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
228*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
229*4bdc9457SAndroid Build Coastguard Worker   }
230*4bdc9457SAndroid Build Coastguard Worker }
231*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,four_groups_small_batch_with_input_and_output_stride)232*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, four_groups_small_batch_with_input_and_output_stride) {
233*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
234*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
235*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
236*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
237*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
238*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
239*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
240*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
241*4bdc9457SAndroid Build Coastguard Worker       .TestX8();
242*4bdc9457SAndroid Build Coastguard Worker   }
243*4bdc9457SAndroid Build Coastguard Worker }
244*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X8,many_groups_small_batch_with_input_and_output_stride)245*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X8, many_groups_small_batch_with_input_and_output_stride) {
246*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
247*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
248*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
249*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
250*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
251*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
252*4bdc9457SAndroid Build Coastguard Worker         .input_stride(1007)
253*4bdc9457SAndroid Build Coastguard Worker         .output_stride(1111)
254*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
255*4bdc9457SAndroid Build Coastguard Worker         .TestX8();
256*4bdc9457SAndroid Build Coastguard Worker     }
257*4bdc9457SAndroid Build Coastguard Worker   }
258*4bdc9457SAndroid Build Coastguard Worker }
259*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,two_groups_unit_batch)260*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, two_groups_unit_batch) {
261*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
262*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
263*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
264*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
265*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
266*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
267*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
268*4bdc9457SAndroid Build Coastguard Worker   }
269*4bdc9457SAndroid Build Coastguard Worker }
270*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,three_groups_unit_batch)271*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, three_groups_unit_batch) {
272*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
273*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
274*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
275*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
276*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
277*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
278*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
279*4bdc9457SAndroid Build Coastguard Worker   }
280*4bdc9457SAndroid Build Coastguard Worker }
281*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,four_groups_unit_batch)282*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, four_groups_unit_batch) {
283*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
284*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
285*4bdc9457SAndroid Build Coastguard Worker       .batch_size(1)
286*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
287*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
288*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
289*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
290*4bdc9457SAndroid Build Coastguard Worker   }
291*4bdc9457SAndroid Build Coastguard Worker }
292*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,many_groups_unit_batch)293*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, many_groups_unit_batch) {
294*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
295*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
296*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
297*4bdc9457SAndroid Build Coastguard Worker         .batch_size(1)
298*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
299*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
300*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
301*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
302*4bdc9457SAndroid Build Coastguard Worker     }
303*4bdc9457SAndroid Build Coastguard Worker   }
304*4bdc9457SAndroid Build Coastguard Worker }
305*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,two_groups_small_batch)306*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, two_groups_small_batch) {
307*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
308*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
309*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
310*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
311*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
312*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
313*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
314*4bdc9457SAndroid Build Coastguard Worker   }
315*4bdc9457SAndroid Build Coastguard Worker }
316*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,three_groups_small_batch)317*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, three_groups_small_batch) {
318*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
319*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
320*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
321*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
322*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
323*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
324*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
325*4bdc9457SAndroid Build Coastguard Worker   }
326*4bdc9457SAndroid Build Coastguard Worker }
327*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,four_groups_small_batch)328*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, four_groups_small_batch) {
329*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
330*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
331*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
332*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
333*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
334*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
335*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
336*4bdc9457SAndroid Build Coastguard Worker   }
337*4bdc9457SAndroid Build Coastguard Worker }
338*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,many_groups_small_batch)339*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, many_groups_small_batch) {
340*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
341*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
342*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
343*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
344*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
345*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
346*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
347*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
348*4bdc9457SAndroid Build Coastguard Worker     }
349*4bdc9457SAndroid Build Coastguard Worker   }
350*4bdc9457SAndroid Build Coastguard Worker }
351*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,two_groups_small_batch_with_input_stride)352*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, two_groups_small_batch_with_input_stride) {
353*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
354*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
355*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
356*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
357*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
358*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
359*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
360*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
361*4bdc9457SAndroid Build Coastguard Worker   }
362*4bdc9457SAndroid Build Coastguard Worker }
363*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,three_groups_small_batch_with_input_stride)364*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, three_groups_small_batch_with_input_stride) {
365*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
366*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
367*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
368*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
369*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
370*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
371*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
372*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
373*4bdc9457SAndroid Build Coastguard Worker   }
374*4bdc9457SAndroid Build Coastguard Worker }
375*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,four_groups_small_batch_with_input_stride)376*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, four_groups_small_batch_with_input_stride) {
377*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
378*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
379*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
380*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
381*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
382*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
383*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
384*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
385*4bdc9457SAndroid Build Coastguard Worker   }
386*4bdc9457SAndroid Build Coastguard Worker }
387*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,many_groups_small_batch_with_input_stride)388*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, many_groups_small_batch_with_input_stride) {
389*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
390*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
391*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
392*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
393*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
394*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
395*4bdc9457SAndroid Build Coastguard Worker         .input_stride(1007)
396*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
397*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
398*4bdc9457SAndroid Build Coastguard Worker     }
399*4bdc9457SAndroid Build Coastguard Worker   }
400*4bdc9457SAndroid Build Coastguard Worker }
401*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,two_groups_small_batch_with_output_stride)402*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, two_groups_small_batch_with_output_stride) {
403*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
404*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
405*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
406*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
407*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
408*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
409*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
410*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
411*4bdc9457SAndroid Build Coastguard Worker   }
412*4bdc9457SAndroid Build Coastguard Worker }
413*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,three_groups_small_batch_with_output_stride)414*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, three_groups_small_batch_with_output_stride) {
415*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
416*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
417*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
418*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
419*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
420*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
421*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
422*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
423*4bdc9457SAndroid Build Coastguard Worker   }
424*4bdc9457SAndroid Build Coastguard Worker }
425*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,four_groups_small_batch_with_output_stride)426*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, four_groups_small_batch_with_output_stride) {
427*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
428*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
429*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
430*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
431*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
432*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
433*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
434*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
435*4bdc9457SAndroid Build Coastguard Worker   }
436*4bdc9457SAndroid Build Coastguard Worker }
437*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,many_groups_small_batch_with_output_stride)438*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, many_groups_small_batch_with_output_stride) {
439*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
440*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
441*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
442*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
443*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
444*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
445*4bdc9457SAndroid Build Coastguard Worker         .output_stride(1111)
446*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
447*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
448*4bdc9457SAndroid Build Coastguard Worker     }
449*4bdc9457SAndroid Build Coastguard Worker   }
450*4bdc9457SAndroid Build Coastguard Worker }
451*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,two_groups_small_batch_with_input_and_output_stride)452*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, two_groups_small_batch_with_input_and_output_stride) {
453*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
454*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
455*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
456*4bdc9457SAndroid Build Coastguard Worker       .groups(2)
457*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
458*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
459*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
460*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
461*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
462*4bdc9457SAndroid Build Coastguard Worker   }
463*4bdc9457SAndroid Build Coastguard Worker }
464*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,three_groups_small_batch_with_input_and_output_stride)465*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, three_groups_small_batch_with_input_and_output_stride) {
466*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
467*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
468*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
469*4bdc9457SAndroid Build Coastguard Worker       .groups(3)
470*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
471*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
472*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
473*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
474*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
475*4bdc9457SAndroid Build Coastguard Worker   }
476*4bdc9457SAndroid Build Coastguard Worker }
477*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,four_groups_small_batch_with_input_and_output_stride)478*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, four_groups_small_batch_with_input_and_output_stride) {
479*4bdc9457SAndroid Build Coastguard Worker   for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
480*4bdc9457SAndroid Build Coastguard Worker     ChannelShuffleOperatorTester()
481*4bdc9457SAndroid Build Coastguard Worker       .batch_size(3)
482*4bdc9457SAndroid Build Coastguard Worker       .groups(4)
483*4bdc9457SAndroid Build Coastguard Worker       .group_channels(group_channels)
484*4bdc9457SAndroid Build Coastguard Worker       .input_stride(511)
485*4bdc9457SAndroid Build Coastguard Worker       .output_stride(513)
486*4bdc9457SAndroid Build Coastguard Worker       .iterations(3)
487*4bdc9457SAndroid Build Coastguard Worker       .TestX32();
488*4bdc9457SAndroid Build Coastguard Worker   }
489*4bdc9457SAndroid Build Coastguard Worker }
490*4bdc9457SAndroid Build Coastguard Worker 
TEST(CHANNEL_SHUFFLE_NC_X32,many_groups_small_batch_with_input_and_output_stride)491*4bdc9457SAndroid Build Coastguard Worker TEST(CHANNEL_SHUFFLE_NC_X32, many_groups_small_batch_with_input_and_output_stride) {
492*4bdc9457SAndroid Build Coastguard Worker   for (size_t groups = 5; groups < 12; groups += 3) {
493*4bdc9457SAndroid Build Coastguard Worker     for (size_t group_channels = 1; group_channels < 100; group_channels += 15) {
494*4bdc9457SAndroid Build Coastguard Worker       ChannelShuffleOperatorTester()
495*4bdc9457SAndroid Build Coastguard Worker         .batch_size(3)
496*4bdc9457SAndroid Build Coastguard Worker         .groups(groups)
497*4bdc9457SAndroid Build Coastguard Worker         .group_channels(group_channels)
498*4bdc9457SAndroid Build Coastguard Worker         .input_stride(1007)
499*4bdc9457SAndroid Build Coastguard Worker         .output_stride(1111)
500*4bdc9457SAndroid Build Coastguard Worker         .iterations(3)
501*4bdc9457SAndroid Build Coastguard Worker         .TestX32();
502*4bdc9457SAndroid Build Coastguard Worker     }
503*4bdc9457SAndroid Build Coastguard Worker   }
504*4bdc9457SAndroid Build Coastguard Worker }
505