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