1/*******************************************************************************
2* Copyright 2016-2022 Intel Corporation
3*
4* Licensed under the Apache License, Version 2.0 (the "License");
5* you may not use this file except in compliance with the License.
6* You may obtain a copy of the License at
7*
8* http://www.apache.org/licenses/LICENSE-2.0
9*
10* Unless required by applicable law or agreed to in writing, software
11* distributed under the License is distributed on an "AS IS" BASIS,
12* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13* See the License for the specific language governing permissions and
14* limitations under the License.
15*******************************************************************************/
16
17#include <numeric>
18#include <utility>
19
20#include "dnnl_test_common.hpp"
21#include "gtest/gtest.h"
22
23#include "oneapi/dnnl/dnnl.hpp"
24
25#include "test_reorder_common.hpp"
26
27namespace dnnl {
28
29using f32_f32 = std::pair<float, float>;
30using s32_s32 = std::pair<int32_t, int32_t>;
31using s8_s8 = std::pair<int8_t, int8_t>;
32
33using cfg_f32 = test_simple_params<f32_f32>;
34using cfg_s32 = test_simple_params<s32_s32>;
35using cfg_s8 = test_simple_params<s8_s8>;
36
37using reorder_simple_test_f32_f32 = reorder_simple_test<f32_f32>;
38using reorder_simple_test_s32_s32 = reorder_simple_test<s32_s32>;
39using reorder_simple_test_s8_s8 = reorder_simple_test<s8_s8>;
40
41using fmt = memory::format_tag;
42
43TEST_P(reorder_simple_test_s32_s32, TestsReorder) {
44 Test();
45}
46TEST_P(reorder_simple_test_f32_f32, TestsReorder) {
47 Test();
48}
49TEST_P(reorder_simple_test_s8_s8, TestsReorder) {
50 Test();
51}
52
53INSTANTIATE_TEST_SUITE_P(CornerCases, reorder_simple_test_f32_f32,
54 ::testing::Values(cfg_f32 {fmt::nchw, fmt::nc, {2, 16, 8, 8}, true,
55 dnnl_invalid_arguments},
56 cfg_f32 {fmt::any, fmt::nchw, {2, 28, 3, 4}, true,
57 dnnl_invalid_arguments},
58 cfg_f32 {fmt::nchw, fmt::any, {2, 28, 3, 4}, true,
59 dnnl_invalid_arguments},
60 cfg_f32 {fmt::nchw, fmt::nchw, {0, 16, 8, 8}},
61 cfg_f32 {fmt::nchw, fmt::nChw8c, {0, 5, 8, 8}},
62 cfg_f32 {fmt::nchw, fmt::nChw16c, {0, 5, 8, 8}},
63 cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {13, 0, 3, 3}},
64 cfg_f32 {fmt::OIhw8i8o, fmt::OIhw8o8i, {0, 32, 3, 3}},
65 cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {16, 31, 0, 3}},
66 cfg_f32 {fmt::OIhw16i16o, fmt::OIhw16o16i, {32, 16, 3, 0}}));
67
68CPU_INSTANTIATE_TEST_SUITE_P(PaddedData, reorder_simple_test_f32_f32,
69 ::testing::Values(cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 28, 3, 4}},
70 cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 28, 3, 4}},
71 cfg_f32 {fmt::chwn, fmt::nChw8c, {2, 28, 3, 4}},
72 cfg_f32 {fmt::nChw8c, fmt::chwn, {2, 28, 3, 4}},
73 cfg_f32 {fmt::nhwc, fmt::nChw8c, {3, 28, 3, 4}},
74 cfg_f32 {fmt::nChw8c, fmt::nhwc, {3, 28, 3, 4}},
75
76 cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 28, 3, 4}},
77 cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 28, 3, 4}},
78 cfg_f32 {fmt::chwn, fmt::nChw16c, {2, 28, 3, 4}},
79 cfg_f32 {fmt::nChw16c, fmt::chwn, {2, 28, 3, 4}},
80 cfg_f32 {fmt::nhwc, fmt::nChw16c, {3, 28, 3, 4}},
81 cfg_f32 {fmt::nChw16c, fmt::nhwc, {3, 28, 3, 4}},
82
83 cfg_f32 {fmt::ncdhw, fmt::nCdhw16c, {2, 28, 2, 3, 4}},
84 cfg_f32 {fmt::nCdhw16c, fmt::ncdhw, {2, 28, 2, 3, 4}},
85 // cfg_f32{fmt::cdhwn, fmt::nCdhw16c, {2, 28, 2, 3, 4}},
86 // cfg_f32{fmt::nCdhw16c, fmt::cdhwn, {2, 28, 2, 3, 4}},
87 cfg_f32 {fmt::ndhwc, fmt::nCdhw16c, {3, 28, 2, 3, 4}},
88 cfg_f32 {fmt::nCdhw16c, fmt::ndhwc, {3, 28, 2, 3, 4}}));
89
90CPU_INSTANTIATE_TEST_SUITE_P(Data_3d, reorder_simple_test_f32_f32,
91 ::testing::Values(cfg_f32 {fmt::ncdhw, fmt::nCdhw16c, {2, 32, 2, 3, 4}},
92 cfg_f32 {fmt::nCdhw16c, fmt::ncdhw, {2, 32, 2, 3, 4}},
93 cfg_f32 {fmt::nCdhw8c, fmt::ncdhw, {2, 32, 2, 3, 4}},
94 cfg_f32 {fmt::ndhwc, fmt::nCdhw16c, {3, 32, 2, 3, 4}},
95 cfg_f32 {fmt::nCdhw16c, fmt::ndhwc, {3, 32, 2, 3, 4}},
96 cfg_f32 {fmt::ndhwc, fmt::nCdhw8c, {3, 32, 2, 3, 4}},
97 cfg_f32 {fmt::nCdhw8c, fmt::ndhwc, {3, 32, 2, 3, 4}}));
98
99CPU_INSTANTIATE_TEST_SUITE_P(PaddedWeights, reorder_simple_test_f32_f32,
100 ::testing::Values(
101 // Oi(d)hw16o
102 cfg_f32 {fmt::oihw, fmt::Oihw16o, {17, 23, 2, 3}},
103 cfg_f32 {fmt::Oihw16o, fmt::oihw, {17, 23, 2, 3}},
104 cfg_f32 {fmt::oidhw, fmt::Oidhw16o, {17, 23, 2, 2, 3}},
105 cfg_f32 {fmt::Oidhw16o, fmt::oidhw, {17, 23, 2, 2, 3}},
106 // OIhw16i16o
107 cfg_f32 {fmt::oihw, fmt::OIhw16i16o, {17, 23, 2, 3}},
108 cfg_f32 {fmt::OIhw16i16o, fmt::oihw, {17, 23, 2, 3}},
109 cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {17, 23, 2, 3}},
110 cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {17, 23, 2, 3}},
111 cfg_f32 {fmt::hwio, fmt::OIhw16i16o, {17, 23, 2, 3}},
112 cfg_f32 {fmt::OIhw16i16o, fmt::hwio, {17, 23, 2, 3}},
113 // OIhw16o16i
114 cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {17, 23, 2, 3}},
115 cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {17, 23, 2, 3}},
116 // IOhw16o16i
117 cfg_f32 {fmt::oihw, fmt::IOhw16o16i, {17, 23, 2, 3}},
118 cfg_f32 {fmt::IOhw16o16i, fmt::oihw, {17, 23, 2, 3}},
119 // gOdhwi16o
120 cfg_f32 {fmt::goidhw, fmt::gOdhwi16o, {2, 17, 23, 2, 2, 3}},
121 cfg_f32 {fmt::gOdhwi16o, fmt::goidhw, {2, 17, 23, 3, 2, 3}},
122 // OIdhw16o16i
123 cfg_f32 {fmt::oidhw, fmt::OIdhw16o16i, {17, 23, 2, 3, 3}},
124 cfg_f32 {fmt::OIdhw16o16i, fmt::oidhw, {17, 23, 2, 3, 3}},
125 // IOdhw16o16i
126 cfg_f32 {fmt::oidhw, fmt::IOdhw16o16i, {17, 23, 2, 3, 3}},
127 cfg_f32 {fmt::IOdhw16o16i, fmt::oidhw, {17, 23, 2, 3, 3}},
128 // gOIdhw16i16o
129 cfg_f32 {fmt::goidhw, fmt::gOIdhw16i16o, {2, 17, 23, 2, 2, 3}},
130 cfg_f32 {fmt::gOIdhw16i16o, fmt::goidhw, {2, 17, 23, 3, 2, 3}},
131 // gOIdhw16o16i
132 cfg_f32 {fmt::goidhw, fmt::gOIdhw16o16i, {2, 17, 23, 2, 2, 3}},
133 cfg_f32 {fmt::gOIdhw16o16i, fmt::goidhw, {2, 17, 23, 3, 2, 3}},
134 // gIOdhw16o16i
135 cfg_f32 {fmt::goidhw, fmt::gIOdhw16o16i, {2, 17, 23, 2, 2, 3}},
136 cfg_f32 {fmt::gIOdhw16o16i, fmt::goidhw, {2, 17, 23, 3, 2, 3}},
137 // Oihw16o
138 cfg_f32 {fmt::oihw, fmt::Oihw16o, {17, 23, 2, 3}},
139 cfg_f32 {fmt::Oihw16o, fmt::oihw, {17, 23, 2, 3}},
140 // OIhw8i8o
141 cfg_f32 {fmt::oihw, fmt::OIhw8i8o, {17, 23, 2, 3}},
142 cfg_f32 {fmt::OIhw8i8o, fmt::oihw, {17, 23, 2, 3}},
143 cfg_f32 {fmt::oihw, fmt::OIhw8o8i, {17, 23, 2, 3}},
144 cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {17, 23, 2, 3}},
145 cfg_f32 {fmt::hwio, fmt::OIhw8i8o, {17, 23, 2, 3}},
146 cfg_f32 {fmt::OIhw8i8o, fmt::hwio, {17, 23, 2, 3}}));
147
148CPU_INSTANTIATE_TEST_SUITE_P(Weights_3d, reorder_simple_test_f32_f32,
149 ::testing::Values(
150 cfg_f32 {fmt::oidhw, fmt::OIdhw8i8o, {16, 24, 2, 3, 3}},
151 cfg_f32 {fmt::OIdhw8i8o, fmt::oidhw, {16, 24, 2, 3, 3}},
152 cfg_f32 {fmt::oidhw, fmt::OIdhw8o8i, {16, 24, 2, 3, 3}},
153 cfg_f32 {fmt::OIdhw8o8i, fmt::oidhw, {16, 24, 2, 3, 3}},
154 cfg_f32 {fmt::oidhw, fmt::OIdhw8o4i, {16, 24, 2, 3, 3}},
155 cfg_f32 {fmt::OIdhw8o4i, fmt::oidhw, {16, 24, 2, 3, 3}},
156 cfg_f32 {fmt::dhwio, fmt::OIdhw8i8o, {16, 24, 2, 3, 3}},
157 cfg_f32 {fmt::OIdhw8i8o, fmt::dhwio, {16, 24, 2, 3, 3}},
158 cfg_f32 {fmt::goidhw, fmt::gOdhwi8o, {2, 16, 24, 2, 2, 3}},
159 cfg_f32 {fmt::gOdhwi8o, fmt::goidhw, {2, 16, 24, 3, 2, 3}},
160 cfg_f32 {fmt::goidhw, fmt::gOIdhw8i8o, {2, 16, 24, 2, 2, 3}},
161 cfg_f32 {fmt::gOIdhw8i8o, fmt::goidhw, {2, 16, 24, 3, 2, 3}},
162 cfg_f32 {fmt::goidhw, fmt::gOIdhw8o8i, {2, 16, 24, 2, 2, 3}},
163 cfg_f32 {fmt::gOIdhw8o8i, fmt::goidhw, {2, 16, 24, 3, 2, 3}},
164 cfg_f32 {fmt::giodhw, fmt::gOIdhw8o8i, {2, 16, 24, 2, 2, 3}},
165 cfg_f32 {fmt::gOIdhw8o4i, fmt::goidhw, {2, 16, 24, 3, 2, 3}},
166 cfg_f32 {fmt::giodhw, fmt::gOIdhw8o4i, {2, 16, 24, 2, 2, 3}},
167 cfg_f32 {fmt::goidhw, fmt::giodhw, {2, 16, 24, 3, 2, 3}},
168 cfg_f32 {fmt::iodhw, fmt::OIdhw8o8i, {16, 24, 2, 2, 3}},
169 // OIdhw16i16o and IOdhw16o16i
170 cfg_f32 {fmt::oidhw, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}},
171 cfg_f32 {fmt::OIdhw16i16o, fmt::oidhw, {64, 48, 2, 3, 4}},
172 cfg_f32 {fmt::dhwio, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}},
173 cfg_f32 {fmt::OIdhw16i16o, fmt::dhwio, {64, 48, 2, 3, 4}},
174 cfg_f32 {fmt::oidhw, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}},
175 cfg_f32 {fmt::IOdhw16o16i, fmt::oidhw, {64, 48, 2, 3, 4}},
176 cfg_f32 {fmt::dhwio, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}},
177 cfg_f32 {fmt::IOdhw16o16i, fmt::dhwio, {64, 48, 2, 3, 4}},
178 cfg_f32 {fmt::OIdhw16i16o, fmt::IOdhw16o16i, {64, 48, 2, 3, 4}},
179 cfg_f32 {fmt::IOdhw16o16i, fmt::OIdhw16i16o, {64, 48, 2, 3, 4}},
180 // gOIdhw16i16o and gIOdhw16o16i
181 cfg_f32 {fmt::goidhw, fmt::gOIdhw16i16o, {2, 64, 96, 2, 3, 4}},
182 cfg_f32 {fmt::gOIdhw16i16o, fmt::goidhw, {2, 64, 96, 2, 3, 4}},
183 cfg_f32 {fmt::goidhw, fmt::gIOdhw16o16i, {2, 64, 96, 2, 3, 4}},
184 cfg_f32 {fmt::gIOdhw16o16i, fmt::goidhw, {2, 64, 96, 2, 3, 4}},
185 cfg_f32 {fmt::gOIdhw16i16o, fmt::gIOdhw16o16i,
186 {2, 64, 96, 2, 3, 4}},
187 cfg_f32 {fmt::gIOdhw16o16i, fmt::gOIdhw16i16o,
188 {2, 64, 96, 2, 3, 4}}));
189
190CPU_INSTANTIATE_TEST_SUITE_P(Data, reorder_simple_test_f32_f32,
191 ::testing::Values(cfg_f32 {fmt::nchw, fmt::nchw, {10, 10, 13, 13}},
192 cfg_f32 {fmt::nchw, fmt::nhwc, {10, 10, 10, 10}},
193 cfg_f32 {fmt::nhwc, fmt::nchw, {10, 10, 10, 10}},
194 cfg_f32 {fmt::nchw, fmt::chwn, {28, 3, 10, 10}},
195 cfg_f32 {fmt::chwn, fmt::nchw, {28, 3, 10, 10}},
196 cfg_f32 {fmt::nhwc, fmt::nhwc, {10, 10, 13, 13}},
197 cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 32, 4, 4}},
198 cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 32, 4, 4}},
199 cfg_f32 {fmt::chwn, fmt::nChw8c, {28, 96, 10, 10}},
200 cfg_f32 {fmt::nChw8c, fmt::chwn, {28, 96, 10, 10}},
201 cfg_f32 {fmt::nhwc, fmt::nChw8c, {3, 64, 16, 16}},
202 cfg_f32 {fmt::nChw8c, fmt::nhwc, {3, 64, 16, 16}},
203 cfg_f32 {fmt::nChw8c, fmt::nChw16c, {10, 96, 27, 27}},
204 cfg_f32 {fmt::nChw16c, fmt::nChw8c, {10, 96, 27, 27}},
205 cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 64, 4, 4}},
206 cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 64, 4, 4}},
207 cfg_f32 {fmt::chwn, fmt::nChw16c, {28, 96, 10, 10}},
208 cfg_f32 {fmt::nChw16c, fmt::chwn, {28, 96, 10, 10}},
209 cfg_f32 {fmt::nhwc, fmt::nChw16c, {2, 64, 4, 4}},
210 cfg_f32 {fmt::nChw16c, fmt::nhwc, {2, 64, 4, 4}},
211 cfg_f32 {fmt::abcd, fmt::abdc, {10, 10, 10, 10}}));
212
213CPU_INSTANTIATE_TEST_SUITE_P(Weights_0, reorder_simple_test_f32_f32,
214 ::testing::Values(cfg_f32 {fmt::hwio, fmt::oihw, {32, 32, 3, 3}},
215 cfg_f32 {fmt::oihw, fmt::hwio, {32, 32, 3, 3}},
216 cfg_f32 {fmt::hwio, fmt::Ohwi8o, {32, 32, 3, 3}},
217 cfg_f32 {fmt::Ohwi8o, fmt::hwio, {32, 32, 3, 3}},
218 cfg_f32 {fmt::hwio, fmt::Ohwi16o, {64, 64, 3, 3}},
219 cfg_f32 {fmt::Ohwi16o, fmt::hwio, {64, 64, 3, 3}},
220 cfg_f32 {fmt::oihw, fmt::OIhw8i8o, {32, 32, 3, 3}},
221 cfg_f32 {fmt::OIhw8i8o, fmt::oihw, {32, 32, 3, 3}},
222 cfg_f32 {fmt::ihwo, fmt::OIhw8i8o, {32, 32, 3, 3}},
223 cfg_f32 {fmt::OIhw8i8o, fmt::ihwo, {32, 32, 3, 3}},
224 cfg_f32 {fmt::oihw, fmt::OIhw8o8i, {32, 32, 3, 3}},
225 cfg_f32 {fmt::OIhw8o8i, fmt::oihw, {32, 32, 3, 3}},
226 cfg_f32 {fmt::oihw, fmt::OIhw8o4i, {32, 32, 3, 3}},
227 cfg_f32 {fmt::OIhw8o4i, fmt::oihw, {32, 32, 3, 3}},
228 cfg_f32 {fmt::OIhw8i8o, fmt::OIhw8o8i, {32, 32, 3, 3}},
229 cfg_f32 {fmt::OIhw8o8i, fmt::OIhw8i8o, {32, 32, 3, 3}},
230 cfg_f32 {fmt::hwio, fmt::OIhw8i8o, {32, 32, 3, 3}},
231 cfg_f32 {fmt::OIhw8i8o, fmt::hwio, {32, 32, 3, 3}},
232 cfg_f32 {fmt::goihw, fmt::hwigo, {2, 32, 32, 3, 3}},
233 cfg_f32 {fmt::hwigo, fmt::goihw, {2, 32, 32, 3, 3}},
234 cfg_f32 {fmt::goihw, fmt::gOIhw8i8o, {2, 32, 32, 3, 3}},
235 cfg_f32 {fmt::gOIhw8i8o, fmt::goihw, {2, 32, 32, 3, 3}},
236 cfg_f32 {fmt::goihw, fmt::gOIhw8o8i, {2, 32, 32, 3, 3}},
237 cfg_f32 {fmt::gOIhw8o8i, fmt::goihw, {2, 32, 32, 3, 3}},
238 cfg_f32 {fmt::goihw, fmt::gOIhw8o4i, {2, 32, 32, 3, 3}},
239 cfg_f32 {fmt::gOIhw8o4i, fmt::goihw, {2, 32, 32, 3, 3}},
240 cfg_f32 {fmt::gOIhw8i8o, fmt::gOIhw8o8i, {2, 32, 32, 3, 3}},
241 cfg_f32 {fmt::gOIhw8o8i, fmt::gOIhw8i8o, {2, 32, 32, 3, 3}},
242 cfg_f32 {fmt::oihw, fmt::OIhw16i16o, {64, 64, 3, 3}},
243 cfg_f32 {fmt::OIhw16i16o, fmt::oihw, {64, 64, 3, 3}},
244 cfg_f32 {fmt::ihwo, fmt::OIhw16i16o, {64, 64, 3, 3}},
245 cfg_f32 {fmt::OIhw16i16o, fmt::ihwo, {64, 64, 3, 3}},
246 cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {64, 64, 3, 3}},
247 cfg_f32 {fmt::OIhw16o16i, fmt::oihw, {64, 64, 3, 3}},
248 cfg_f32 {fmt::hwio, fmt::OIhw16i16o, {64, 64, 3, 3}},
249 cfg_f32 {fmt::OIhw16i16o, fmt::hwio, {64, 64, 3, 3}},
250 cfg_f32 {fmt::goihw, fmt::gOIhw16i16o, {2, 64, 64, 3, 3}},
251 cfg_f32 {fmt::gOIhw16i16o, fmt::goihw, {2, 64, 64, 3, 3}},
252 cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}},
253 cfg_f32 {fmt::gOIhw16o16i, fmt::goihw, {2, 64, 64, 3, 3}},
254 cfg_f32 {fmt::OIhw16i16o, fmt::OIhw16o16i, {64, 64, 3, 3}},
255 cfg_f32 {fmt::OIhw16o16i, fmt::OIhw16i16o, {64, 64, 3, 3}},
256 cfg_f32 {fmt::gOIhw16i16o, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}},
257 cfg_f32 {fmt::gOIhw16o16i, fmt::gOIhw16i16o, {2, 64, 64, 3, 3}},
258 cfg_f32 {fmt::oihw, fmt::Oihw16o, {64, 64, 3, 3}},
259 cfg_f32 {fmt::Oihw16o, fmt::oihw, {64, 64, 3, 3}},
260 cfg_f32 {fmt::goihw, fmt::gOihw16o, {2, 64, 64, 3, 3}},
261 cfg_f32 {fmt::gOihw16o, fmt::goihw, {2, 64, 64, 3, 3}},
262 cfg_f32 {fmt::Ohwi16o, fmt::Oihw16o, {64, 64, 3, 3}},
263 cfg_f32 {fmt::Oihw16o, fmt::Ohwi16o, {64, 64, 3, 3}},
264 cfg_f32 {fmt::gOhwi16o, fmt::gOihw16o, {2, 64, 64, 3, 3}},
265 cfg_f32 {fmt::gOihw16o, fmt::gOhwi16o, {2, 64, 64, 3, 3}},
266 cfg_f32 {fmt::goihw, fmt::Goihw8g, {16, 16, 16, 3, 3}},
267 cfg_f32 {fmt::Goihw8g, fmt::goihw, {16, 16, 16, 3, 3}}));
268
269CPU_INSTANTIATE_TEST_SUITE_P(Weights_1, reorder_simple_test_f32_f32,
270 ::testing::Values(
271 cfg_f32 {fmt::goihw, fmt::Goihw16g, {32, 32, 32, 3, 3}},
272 cfg_f32 {fmt::Goihw16g, fmt::goihw, {32, 32, 32, 3, 3}},
273 cfg_f32 {fmt::goihw, fmt::hwioG16g, {32, 32, 32, 3, 3}},
274 cfg_f32 {fmt::hwioG16g, fmt::goihw, {32, 32, 32, 3, 3}},
275 cfg_f32 {fmt::goihw, fmt::hwioG8g, {32, 32, 32, 3, 3}},
276 cfg_f32 {fmt::hwioG8g, fmt::goihw, {32, 32, 32, 3, 3}},
277 cfg_f32 {fmt::oihw, fmt::iohw, {32, 32, 3, 3}},
278 cfg_f32 {fmt::iohw, fmt::oihw, {32, 32, 3, 3}},
279 cfg_f32 {fmt::goihw, fmt::giohw, {2, 32, 32, 3, 3}},
280 cfg_f32 {fmt::giohw, fmt::goihw, {2, 32, 32, 3, 3}}));
281
282CPU_INSTANTIATE_TEST_SUITE_P(Weights_IOhw16o16i, reorder_simple_test_f32_f32,
283 ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16o16i, {64, 64, 3, 3}},
284 cfg_f32 {fmt::IOhw16o16i, fmt::oihw, {64, 64, 3, 3}},
285 cfg_f32 {fmt::OIhw16i16o, fmt::IOhw16o16i, {64, 64, 3, 3}},
286 cfg_f32 {fmt::IOhw16o16i, fmt::OIhw16i16o, {64, 64, 3, 3}},
287 cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 64, 64, 3, 3}},
288 cfg_f32 {fmt::gIOhw16o16i, fmt::goihw, {2, 64, 64, 3, 3}},
289 cfg_f32 {fmt::gOIhw16i16o, fmt::gIOhw16o16i, {2, 64, 64, 3, 3}},
290 cfg_f32 {fmt::gIOhw16o16i, fmt::gOIhw16i16o,
291 {2, 64, 64, 3, 3}}));
292
293CPU_INSTANTIATE_TEST_SUITE_P(Simple, reorder_simple_test_s32_s32,
294 ::testing::Values(cfg_s32 {fmt::nchw, fmt::nChw16c, {2, 64, 4, 4}},
295 cfg_s32 {fmt::nChw16c, fmt::nchw, {2, 64, 4, 4}}));
296
297CPU_INSTANTIATE_TEST_SUITE_P(Simple, reorder_simple_test_s8_s8,
298 ::testing::Values(cfg_s8 {fmt::oihw, fmt::OIhw4i16o4i, {64, 64, 3, 3}},
299 cfg_s8 {fmt::OIhw4i16o4i, fmt::oihw, {64, 64, 3, 3}},
300 cfg_s8 {fmt::goihw, fmt::gOIhw4i16o4i, {2, 64, 64, 3, 3}},
301 cfg_s8 {fmt::gOIhw4i16o4i, fmt::goihw, {2, 64, 64, 3, 3}}));
302
303GPU_INSTANTIATE_TEST_SUITE_P(Data, reorder_simple_test_f32_f32,
304 ::testing::Values(cfg_f32 {fmt::nchw, fmt::nhwc, {2, 48, 5, 4}},
305 cfg_f32 {fmt::nchw, fmt::NChw16n16c, {64, 32, 5, 6}},
306 cfg_f32 {fmt::nChw16c, fmt::NChw16n16c, {32, 48, 6, 9}},
307 cfg_f32 {fmt::ncdhw, fmt::ndhwc, {2, 48, 2, 5, 4}},
308 cfg_f32 {fmt::ncdhw, fmt::NCdhw16n16c, {32, 32, 2, 5, 6}},
309 cfg_f32 {fmt::nCdhw16c, fmt::NCdhw16n16c, {32, 48, 2, 6, 9}}));
310
311GPU_INSTANTIATE_TEST_SUITE_P(Data_1D, reorder_simple_test_f32_f32,
312 ::testing::Values(cfg_f32 {fmt::ncw, fmt::nCw16c, {2, 48, 7}},
313 cfg_f32 {fmt::nCw16c, fmt::ncw, {2, 48, 7}},
314 cfg_f32 {fmt::ncw, fmt::NCw16n16c, {32, 48, 7}},
315 cfg_f32 {fmt::NCw16n16c, fmt::ncw, {32, 48, 7}},
316 cfg_f32 {fmt::nCw16c, fmt::NCw16n16c, {32, 48, 7}},
317 cfg_f32 {fmt::NCw16n16c, fmt::nCw16c, {32, 48, 7}}));
318
319GPU_INSTANTIATE_TEST_SUITE_P(PaddedData, reorder_simple_test_f32_f32,
320 ::testing::Values(cfg_f32 {fmt::nchw, fmt::nChw8c, {2, 28, 5, 4}},
321 cfg_f32 {fmt::nChw8c, fmt::nchw, {2, 28, 5, 4}},
322 cfg_f32 {fmt::nchw, fmt::nChw16c, {2, 28, 5, 4}},
323 cfg_f32 {fmt::nChw16c, fmt::nchw, {2, 28, 5, 4}}));
324
325GPU_INSTANTIATE_TEST_SUITE_P(Weights, reorder_simple_test_f32_f32,
326 ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16i16o, {32, 48, 2, 3}},
327 cfg_f32 {fmt::oihw, fmt::OIhw16o16i, {32, 32, 2, 2}},
328 cfg_f32 {fmt::hwigo, fmt::gIOhw16i16o, {2, 64, 32, 2, 3}},
329 cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 32, 64, 2, 3}},
330 cfg_f32 {fmt::OIhw16o16i, fmt::IOhw16i16o, {32, 48, 2, 3}},
331 cfg_f32 {fmt::gOIhw16o16i, fmt::gIOhw16i16o, {2, 64, 32, 3, 2}},
332 cfg_f32 {fmt::oidhw, fmt::OIdhw16i16o, {64, 32, 3, 9, 5}},
333 cfg_f32 {
334 fmt::goidhw, fmt::gOIdhw16i16o, {2, 32, 64, 2, 2, 7}}));
335
336GPU_INSTANTIATE_TEST_SUITE_P(weights_1D, reorder_simple_test_f32_f32,
337 ::testing::Values(cfg_f32 {fmt::oiw, fmt::OIw8i16o2i, {32, 48, 7}},
338 cfg_f32 {fmt::OIw8i16o2i, fmt::oiw, {32, 48, 7}},
339 cfg_f32 {fmt::goiw, fmt::gOIw8i16o2i, {8, 32, 48, 7}},
340 cfg_f32 {fmt::gOIw8i16o2i, fmt::goiw, {8, 32, 48, 7}},
341 cfg_f32 {fmt::oiw, fmt::OIw16i16o, {32, 48, 7}},
342 cfg_f32 {fmt::OIw16i16o, fmt::oiw, {32, 48, 7}},
343 cfg_f32 {fmt::oiw, fmt::OIw8o4i, {32, 48, 7}},
344 cfg_f32 {fmt::OIw8o4i, fmt::oiw, {32, 48, 7}},
345 cfg_f32 {fmt::goiw, fmt::gOIw16i16o, {8, 32, 48, 7}},
346 cfg_f32 {fmt::gOIw16i16o, fmt::goiw, {8, 32, 48, 7}},
347 cfg_f32 {fmt::goiw, fmt::gOIw8o4i, {8, 32, 48, 7}},
348 cfg_f32 {fmt::gOIw8o4i, fmt::goiw, {8, 32, 48, 7}},
349 cfg_f32 {fmt::oiw, fmt::Oiw16o, {32, 48, 7}},
350 cfg_f32 {fmt::Oiw16o, fmt::oiw, {32, 48, 7}},
351 cfg_f32 {fmt::goiw, fmt::gOiw16o, {8, 32, 48, 7}},
352 cfg_f32 {fmt::gOiw16o, fmt::goiw, {8, 32, 48, 7}},
353 cfg_f32 {fmt::oiw, fmt::IOw16i16o, {32, 48, 7}},
354 cfg_f32 {fmt::IOw16i16o, fmt::oiw, {32, 48, 7}},
355 cfg_f32 {fmt::goiw, fmt::gIOw16i16o, {8, 32, 48, 7}},
356 cfg_f32 {fmt::gIOw16i16o, fmt::goiw, {8, 32, 48, 7}}));
357
358GPU_INSTANTIATE_TEST_SUITE_P(PaddedWeights, reorder_simple_test_f32_f32,
359 ::testing::Values(cfg_f32 {fmt::oihw, fmt::IOhw16i16o, {17, 23, 2, 1}},
360 cfg_f32 {fmt::goihw, fmt::gOIhw16o16i, {2, 17, 23, 1, 2}}));
361
362} // namespace dnnl
363