blob: 54f438214581c3c91db7531715343e1311fb0ce8 [file] [log] [blame]
Marat Dukhanb2164a32020-06-04 19:05:27 -07001// Copyright 2020 Google LLC
Marat Dukhanc068bb62019-10-04 13:24:39 -07002//
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 <xnnpack.h>
7
Marat Dukhan52e061d2021-03-09 00:02:44 -08008#include <array>
Marat Dukhanc068bb62019-10-04 13:24:39 -07009#include <algorithm>
10#include <functional>
11#include <iostream>
12#include <limits>
13#include <random>
14
Marat Dukhan270a2c42020-06-26 16:45:52 -070015#include <fp16/fp16.h>
16
Marat Dukhanc068bb62019-10-04 13:24:39 -070017#include "models/models.h"
18
19namespace models {
20
Marat Dukhan270a2c42020-06-26 16:45:52 -070021ExecutionPlan FP16MobileNetV2(pthreadpool_t threadpool) {
Marat Dukhan52e061d2021-03-09 00:02:44 -080022 alignas(16) static std::array<uint16_t, 150528> v0;
23 alignas(16) static std::array<uint16_t, 401408> v1;
24 alignas(16) static std::array<uint16_t, 401408> v2;
25 alignas(16) static std::array<uint16_t, 200704> v3;
26 alignas(16) static std::array<uint16_t, 1204224> v4;
27 alignas(16) static std::array<uint16_t, 301056> v5;
28 alignas(16) static std::array<uint16_t, 75264> v6;
29 alignas(16) static std::array<uint16_t, 451584> v7;
30 alignas(16) static std::array<uint16_t, 451584> v8;
31 alignas(16) static std::array<uint16_t, 75264> v9;
32 alignas(16) static std::array<uint16_t, 75264> v10;
33 alignas(16) static std::array<uint16_t, 451584> v11;
34 alignas(16) static std::array<uint16_t, 112896> v12;
35 alignas(16) static std::array<uint16_t, 25088> v13;
36 alignas(16) static std::array<uint16_t, 150528> v14;
37 alignas(16) static std::array<uint16_t, 150528> v15;
38 alignas(16) static std::array<uint16_t, 25088> v16;
39 alignas(16) static std::array<uint16_t, 25088> v17;
40 alignas(16) static std::array<uint16_t, 150528> v18;
41 alignas(16) static std::array<uint16_t, 150528> v19;
42 alignas(16) static std::array<uint16_t, 25088> v20;
43 alignas(16) static std::array<uint16_t, 25088> v21;
44 alignas(16) static std::array<uint16_t, 150528> v22;
45 alignas(16) static std::array<uint16_t, 37632> v23;
46 alignas(16) static std::array<uint16_t, 12544> v24;
47 alignas(16) static std::array<uint16_t, 75264> v25;
48 alignas(16) static std::array<uint16_t, 75264> v26;
49 alignas(16) static std::array<uint16_t, 12544> v27;
50 alignas(16) static std::array<uint16_t, 12544> v28;
51 alignas(16) static std::array<uint16_t, 75264> v29;
52 alignas(16) static std::array<uint16_t, 75264> v30;
53 alignas(16) static std::array<uint16_t, 12544> v31;
54 alignas(16) static std::array<uint16_t, 12544> v32;
55 alignas(16) static std::array<uint16_t, 75264> v33;
56 alignas(16) static std::array<uint16_t, 75264> v34;
57 alignas(16) static std::array<uint16_t, 12544> v35;
58 alignas(16) static std::array<uint16_t, 12544> v36;
59 alignas(16) static std::array<uint16_t, 75264> v37;
60 alignas(16) static std::array<uint16_t, 75264> v38;
61 alignas(16) static std::array<uint16_t, 18816> v39;
62 alignas(16) static std::array<uint16_t, 112896> v40;
63 alignas(16) static std::array<uint16_t, 112896> v41;
64 alignas(16) static std::array<uint16_t, 18816> v42;
65 alignas(16) static std::array<uint16_t, 18816> v43;
66 alignas(16) static std::array<uint16_t, 112896> v44;
67 alignas(16) static std::array<uint16_t, 112896> v45;
68 alignas(16) static std::array<uint16_t, 18816> v46;
69 alignas(16) static std::array<uint16_t, 18816> v47;
70 alignas(16) static std::array<uint16_t, 112896> v48;
71 alignas(16) static std::array<uint16_t, 28224> v49;
72 alignas(16) static std::array<uint16_t, 7840> v50;
73 alignas(16) static std::array<uint16_t, 47040> v51;
74 alignas(16) static std::array<uint16_t, 47040> v52;
75 alignas(16) static std::array<uint16_t, 7840> v53;
76 alignas(16) static std::array<uint16_t, 7840> v54;
77 alignas(16) static std::array<uint16_t, 47040> v55;
78 alignas(16) static std::array<uint16_t, 47040> v56;
79 alignas(16) static std::array<uint16_t, 7840> v57;
80 alignas(16) static std::array<uint16_t, 7840> v58;
81 alignas(16) static std::array<uint16_t, 47040> v59;
82 alignas(16) static std::array<uint16_t, 47040> v60;
83 alignas(16) static std::array<uint16_t, 15680> v61;
84 alignas(16) static std::array<uint16_t, 62720> v62;
85 alignas(16) static std::array<uint16_t, 1280> v63;
86 alignas(16) static std::array<uint16_t, 1001> v64;
87 alignas(16) static std::array<uint16_t, 864> w65;
88 alignas(16) static std::array<uint16_t, 32> w66;
89 alignas(16) static std::array<uint16_t, 288> w67;
90 alignas(16) static std::array<uint16_t, 32> w68;
91 alignas(16) static std::array<uint16_t, 512> w69;
92 alignas(16) static std::array<uint16_t, 16> w70;
93 alignas(16) static std::array<uint16_t, 1536> w71;
94 alignas(16) static std::array<uint16_t, 96> w72;
95 alignas(16) static std::array<uint16_t, 864> w73;
96 alignas(16) static std::array<uint16_t, 96> w74;
97 alignas(16) static std::array<uint16_t, 2304> w75;
98 alignas(16) static std::array<uint16_t, 24> w76;
99 alignas(16) static std::array<uint16_t, 3456> w77;
100 alignas(16) static std::array<uint16_t, 144> w78;
101 alignas(16) static std::array<uint16_t, 1296> w79;
102 alignas(16) static std::array<uint16_t, 144> w80;
103 alignas(16) static std::array<uint16_t, 3456> w81;
104 alignas(16) static std::array<uint16_t, 24> w82;
105 alignas(16) static std::array<uint16_t, 3456> w83;
106 alignas(16) static std::array<uint16_t, 144> w84;
107 alignas(16) static std::array<uint16_t, 1296> w85;
108 alignas(16) static std::array<uint16_t, 144> w86;
109 alignas(16) static std::array<uint16_t, 4608> w87;
110 alignas(16) static std::array<uint16_t, 32> w88;
111 alignas(16) static std::array<uint16_t, 6144> w89;
112 alignas(16) static std::array<uint16_t, 192> w90;
113 alignas(16) static std::array<uint16_t, 1728> w91;
114 alignas(16) static std::array<uint16_t, 192> w92;
115 alignas(16) static std::array<uint16_t, 6144> w93;
116 alignas(16) static std::array<uint16_t, 32> w94;
117 alignas(16) static std::array<uint16_t, 6144> w95;
118 alignas(16) static std::array<uint16_t, 192> w96;
119 alignas(16) static std::array<uint16_t, 1728> w97;
120 alignas(16) static std::array<uint16_t, 192> w98;
121 alignas(16) static std::array<uint16_t, 6144> w99;
122 alignas(16) static std::array<uint16_t, 32> w100;
123 alignas(16) static std::array<uint16_t, 6144> w101;
124 alignas(16) static std::array<uint16_t, 192> w102;
125 alignas(16) static std::array<uint16_t, 1728> w103;
126 alignas(16) static std::array<uint16_t, 192> w104;
127 alignas(16) static std::array<uint16_t, 12288> w105;
128 alignas(16) static std::array<uint16_t, 64> w106;
129 alignas(16) static std::array<uint16_t, 24576> w107;
130 alignas(16) static std::array<uint16_t, 384> w108;
131 alignas(16) static std::array<uint16_t, 3456> w109;
132 alignas(16) static std::array<uint16_t, 384> w110;
133 alignas(16) static std::array<uint16_t, 24576> w111;
134 alignas(16) static std::array<uint16_t, 64> w112;
135 alignas(16) static std::array<uint16_t, 24576> w113;
136 alignas(16) static std::array<uint16_t, 384> w114;
137 alignas(16) static std::array<uint16_t, 3456> w115;
138 alignas(16) static std::array<uint16_t, 384> w116;
139 alignas(16) static std::array<uint16_t, 24576> w117;
140 alignas(16) static std::array<uint16_t, 64> w118;
141 alignas(16) static std::array<uint16_t, 24576> w119;
142 alignas(16) static std::array<uint16_t, 384> w120;
143 alignas(16) static std::array<uint16_t, 3456> w121;
144 alignas(16) static std::array<uint16_t, 384> w122;
145 alignas(16) static std::array<uint16_t, 24576> w123;
146 alignas(16) static std::array<uint16_t, 64> w124;
147 alignas(16) static std::array<uint16_t, 24576> w125;
148 alignas(16) static std::array<uint16_t, 384> w126;
149 alignas(16) static std::array<uint16_t, 3456> w127;
150 alignas(16) static std::array<uint16_t, 384> w128;
151 alignas(16) static std::array<uint16_t, 36864> w129;
152 alignas(16) static std::array<uint16_t, 96> w130;
153 alignas(16) static std::array<uint16_t, 55296> w131;
154 alignas(16) static std::array<uint16_t, 576> w132;
155 alignas(16) static std::array<uint16_t, 5184> w133;
156 alignas(16) static std::array<uint16_t, 576> w134;
157 alignas(16) static std::array<uint16_t, 55296> w135;
158 alignas(16) static std::array<uint16_t, 96> w136;
159 alignas(16) static std::array<uint16_t, 55296> w137;
160 alignas(16) static std::array<uint16_t, 576> w138;
161 alignas(16) static std::array<uint16_t, 5184> w139;
162 alignas(16) static std::array<uint16_t, 576> w140;
163 alignas(16) static std::array<uint16_t, 55296> w141;
164 alignas(16) static std::array<uint16_t, 96> w142;
165 alignas(16) static std::array<uint16_t, 55296> w143;
166 alignas(16) static std::array<uint16_t, 576> w144;
167 alignas(16) static std::array<uint16_t, 5184> w145;
168 alignas(16) static std::array<uint16_t, 576> w146;
169 alignas(16) static std::array<uint16_t, 92160> w147;
170 alignas(16) static std::array<uint16_t, 160> w148;
171 alignas(16) static std::array<uint16_t, 153600> w149;
172 alignas(16) static std::array<uint16_t, 960> w150;
173 alignas(16) static std::array<uint16_t, 8640> w151;
174 alignas(16) static std::array<uint16_t, 960> w152;
175 alignas(16) static std::array<uint16_t, 153600> w153;
176 alignas(16) static std::array<uint16_t, 160> w154;
177 alignas(16) static std::array<uint16_t, 153600> w155;
178 alignas(16) static std::array<uint16_t, 960> w156;
179 alignas(16) static std::array<uint16_t, 8640> w157;
180 alignas(16) static std::array<uint16_t, 960> w158;
181 alignas(16) static std::array<uint16_t, 153600> w159;
182 alignas(16) static std::array<uint16_t, 160> w160;
183 alignas(16) static std::array<uint16_t, 153600> w161;
184 alignas(16) static std::array<uint16_t, 960> w162;
185 alignas(16) static std::array<uint16_t, 8640> w163;
186 alignas(16) static std::array<uint16_t, 960> w164;
187 alignas(16) static std::array<uint16_t, 307200> w165;
188 alignas(16) static std::array<uint16_t, 320> w166;
189 alignas(16) static std::array<uint16_t, 409600> w167;
190 alignas(16) static std::array<uint16_t, 1280> w168;
191 alignas(16) static std::array<uint16_t, 1281280> w169;
192 alignas(16) static std::array<uint16_t, 1001> w170;
Marat Dukhanc068bb62019-10-04 13:24:39 -0700193
194 std::random_device random_device;
195 auto rng = std::mt19937(random_device());
Marat Dukhan43cb20e2020-06-25 20:18:54 -0700196 auto f32rng = std::bind(std::uniform_real_distribution<float>(-1.0f, +1.0f), std::ref(rng));
Marat Dukhan270a2c42020-06-26 16:45:52 -0700197 auto f16rng = std::bind(fp16_ieee_from_fp32_value, f32rng);
Marat Dukhan52e061d2021-03-09 00:02:44 -0800198 std::generate(v0.begin(), v0.end(), std::ref(f16rng));
199 std::generate(v1.begin(), v1.end(), std::ref(f16rng));
200 std::generate(v2.begin(), v2.end(), std::ref(f16rng));
201 std::generate(v3.begin(), v3.end(), std::ref(f16rng));
202 std::generate(v4.begin(), v4.end(), std::ref(f16rng));
203 std::generate(v5.begin(), v5.end(), std::ref(f16rng));
204 std::generate(v6.begin(), v6.end(), std::ref(f16rng));
205 std::generate(v7.begin(), v7.end(), std::ref(f16rng));
206 std::generate(v8.begin(), v8.end(), std::ref(f16rng));
207 std::generate(v9.begin(), v9.end(), std::ref(f16rng));
208 std::generate(v10.begin(), v10.end(), std::ref(f16rng));
209 std::generate(v11.begin(), v11.end(), std::ref(f16rng));
210 std::generate(v12.begin(), v12.end(), std::ref(f16rng));
211 std::generate(v13.begin(), v13.end(), std::ref(f16rng));
212 std::generate(v14.begin(), v14.end(), std::ref(f16rng));
213 std::generate(v15.begin(), v15.end(), std::ref(f16rng));
214 std::generate(v16.begin(), v16.end(), std::ref(f16rng));
215 std::generate(v17.begin(), v17.end(), std::ref(f16rng));
216 std::generate(v18.begin(), v18.end(), std::ref(f16rng));
217 std::generate(v19.begin(), v19.end(), std::ref(f16rng));
218 std::generate(v20.begin(), v20.end(), std::ref(f16rng));
219 std::generate(v21.begin(), v21.end(), std::ref(f16rng));
220 std::generate(v22.begin(), v22.end(), std::ref(f16rng));
221 std::generate(v23.begin(), v23.end(), std::ref(f16rng));
222 std::generate(v24.begin(), v24.end(), std::ref(f16rng));
223 std::generate(v25.begin(), v25.end(), std::ref(f16rng));
224 std::generate(v26.begin(), v26.end(), std::ref(f16rng));
225 std::generate(v27.begin(), v27.end(), std::ref(f16rng));
226 std::generate(v28.begin(), v28.end(), std::ref(f16rng));
227 std::generate(v29.begin(), v29.end(), std::ref(f16rng));
228 std::generate(v30.begin(), v30.end(), std::ref(f16rng));
229 std::generate(v31.begin(), v31.end(), std::ref(f16rng));
230 std::generate(v32.begin(), v32.end(), std::ref(f16rng));
231 std::generate(v33.begin(), v33.end(), std::ref(f16rng));
232 std::generate(v34.begin(), v34.end(), std::ref(f16rng));
233 std::generate(v35.begin(), v35.end(), std::ref(f16rng));
234 std::generate(v36.begin(), v36.end(), std::ref(f16rng));
235 std::generate(v37.begin(), v37.end(), std::ref(f16rng));
236 std::generate(v38.begin(), v38.end(), std::ref(f16rng));
237 std::generate(v39.begin(), v39.end(), std::ref(f16rng));
238 std::generate(v40.begin(), v40.end(), std::ref(f16rng));
239 std::generate(v41.begin(), v41.end(), std::ref(f16rng));
240 std::generate(v42.begin(), v42.end(), std::ref(f16rng));
241 std::generate(v43.begin(), v43.end(), std::ref(f16rng));
242 std::generate(v44.begin(), v44.end(), std::ref(f16rng));
243 std::generate(v45.begin(), v45.end(), std::ref(f16rng));
244 std::generate(v46.begin(), v46.end(), std::ref(f16rng));
245 std::generate(v47.begin(), v47.end(), std::ref(f16rng));
246 std::generate(v48.begin(), v48.end(), std::ref(f16rng));
247 std::generate(v49.begin(), v49.end(), std::ref(f16rng));
248 std::generate(v50.begin(), v50.end(), std::ref(f16rng));
249 std::generate(v51.begin(), v51.end(), std::ref(f16rng));
250 std::generate(v52.begin(), v52.end(), std::ref(f16rng));
251 std::generate(v53.begin(), v53.end(), std::ref(f16rng));
252 std::generate(v54.begin(), v54.end(), std::ref(f16rng));
253 std::generate(v55.begin(), v55.end(), std::ref(f16rng));
254 std::generate(v56.begin(), v56.end(), std::ref(f16rng));
255 std::generate(v57.begin(), v57.end(), std::ref(f16rng));
256 std::generate(v58.begin(), v58.end(), std::ref(f16rng));
257 std::generate(v59.begin(), v59.end(), std::ref(f16rng));
258 std::generate(v60.begin(), v60.end(), std::ref(f16rng));
259 std::generate(v61.begin(), v61.end(), std::ref(f16rng));
260 std::generate(v62.begin(), v62.end(), std::ref(f16rng));
261 std::generate(v63.begin(), v63.end(), std::ref(f16rng));
262 std::generate(v64.begin(), v64.end(), std::ref(f16rng));
263 std::generate(w65.begin(), w65.end(), std::ref(f16rng));
264 std::generate(w66.begin(), w66.end(), std::ref(f16rng));
265 std::generate(w67.begin(), w67.end(), std::ref(f16rng));
266 std::generate(w68.begin(), w68.end(), std::ref(f16rng));
267 std::generate(w69.begin(), w69.end(), std::ref(f16rng));
268 std::generate(w70.begin(), w70.end(), std::ref(f16rng));
269 std::generate(w71.begin(), w71.end(), std::ref(f16rng));
270 std::generate(w72.begin(), w72.end(), std::ref(f16rng));
271 std::generate(w73.begin(), w73.end(), std::ref(f16rng));
272 std::generate(w74.begin(), w74.end(), std::ref(f16rng));
273 std::generate(w75.begin(), w75.end(), std::ref(f16rng));
274 std::generate(w76.begin(), w76.end(), std::ref(f16rng));
275 std::generate(w77.begin(), w77.end(), std::ref(f16rng));
276 std::generate(w78.begin(), w78.end(), std::ref(f16rng));
277 std::generate(w79.begin(), w79.end(), std::ref(f16rng));
278 std::generate(w80.begin(), w80.end(), std::ref(f16rng));
279 std::generate(w81.begin(), w81.end(), std::ref(f16rng));
280 std::generate(w82.begin(), w82.end(), std::ref(f16rng));
281 std::generate(w83.begin(), w83.end(), std::ref(f16rng));
282 std::generate(w84.begin(), w84.end(), std::ref(f16rng));
283 std::generate(w85.begin(), w85.end(), std::ref(f16rng));
284 std::generate(w86.begin(), w86.end(), std::ref(f16rng));
285 std::generate(w87.begin(), w87.end(), std::ref(f16rng));
286 std::generate(w88.begin(), w88.end(), std::ref(f16rng));
287 std::generate(w89.begin(), w89.end(), std::ref(f16rng));
288 std::generate(w90.begin(), w90.end(), std::ref(f16rng));
289 std::generate(w91.begin(), w91.end(), std::ref(f16rng));
290 std::generate(w92.begin(), w92.end(), std::ref(f16rng));
291 std::generate(w93.begin(), w93.end(), std::ref(f16rng));
292 std::generate(w94.begin(), w94.end(), std::ref(f16rng));
293 std::generate(w95.begin(), w95.end(), std::ref(f16rng));
294 std::generate(w96.begin(), w96.end(), std::ref(f16rng));
295 std::generate(w97.begin(), w97.end(), std::ref(f16rng));
296 std::generate(w98.begin(), w98.end(), std::ref(f16rng));
297 std::generate(w99.begin(), w99.end(), std::ref(f16rng));
298 std::generate(w100.begin(), w100.end(), std::ref(f16rng));
299 std::generate(w101.begin(), w101.end(), std::ref(f16rng));
300 std::generate(w102.begin(), w102.end(), std::ref(f16rng));
301 std::generate(w103.begin(), w103.end(), std::ref(f16rng));
302 std::generate(w104.begin(), w104.end(), std::ref(f16rng));
303 std::generate(w105.begin(), w105.end(), std::ref(f16rng));
304 std::generate(w106.begin(), w106.end(), std::ref(f16rng));
305 std::generate(w107.begin(), w107.end(), std::ref(f16rng));
306 std::generate(w108.begin(), w108.end(), std::ref(f16rng));
307 std::generate(w109.begin(), w109.end(), std::ref(f16rng));
308 std::generate(w110.begin(), w110.end(), std::ref(f16rng));
309 std::generate(w111.begin(), w111.end(), std::ref(f16rng));
310 std::generate(w112.begin(), w112.end(), std::ref(f16rng));
311 std::generate(w113.begin(), w113.end(), std::ref(f16rng));
312 std::generate(w114.begin(), w114.end(), std::ref(f16rng));
313 std::generate(w115.begin(), w115.end(), std::ref(f16rng));
314 std::generate(w116.begin(), w116.end(), std::ref(f16rng));
315 std::generate(w117.begin(), w117.end(), std::ref(f16rng));
316 std::generate(w118.begin(), w118.end(), std::ref(f16rng));
317 std::generate(w119.begin(), w119.end(), std::ref(f16rng));
318 std::generate(w120.begin(), w120.end(), std::ref(f16rng));
319 std::generate(w121.begin(), w121.end(), std::ref(f16rng));
320 std::generate(w122.begin(), w122.end(), std::ref(f16rng));
321 std::generate(w123.begin(), w123.end(), std::ref(f16rng));
322 std::generate(w124.begin(), w124.end(), std::ref(f16rng));
323 std::generate(w125.begin(), w125.end(), std::ref(f16rng));
324 std::generate(w126.begin(), w126.end(), std::ref(f16rng));
325 std::generate(w127.begin(), w127.end(), std::ref(f16rng));
326 std::generate(w128.begin(), w128.end(), std::ref(f16rng));
327 std::generate(w129.begin(), w129.end(), std::ref(f16rng));
328 std::generate(w130.begin(), w130.end(), std::ref(f16rng));
329 std::generate(w131.begin(), w131.end(), std::ref(f16rng));
330 std::generate(w132.begin(), w132.end(), std::ref(f16rng));
331 std::generate(w133.begin(), w133.end(), std::ref(f16rng));
332 std::generate(w134.begin(), w134.end(), std::ref(f16rng));
333 std::generate(w135.begin(), w135.end(), std::ref(f16rng));
334 std::generate(w136.begin(), w136.end(), std::ref(f16rng));
335 std::generate(w137.begin(), w137.end(), std::ref(f16rng));
336 std::generate(w138.begin(), w138.end(), std::ref(f16rng));
337 std::generate(w139.begin(), w139.end(), std::ref(f16rng));
338 std::generate(w140.begin(), w140.end(), std::ref(f16rng));
339 std::generate(w141.begin(), w141.end(), std::ref(f16rng));
340 std::generate(w142.begin(), w142.end(), std::ref(f16rng));
341 std::generate(w143.begin(), w143.end(), std::ref(f16rng));
342 std::generate(w144.begin(), w144.end(), std::ref(f16rng));
343 std::generate(w145.begin(), w145.end(), std::ref(f16rng));
344 std::generate(w146.begin(), w146.end(), std::ref(f16rng));
345 std::generate(w147.begin(), w147.end(), std::ref(f16rng));
346 std::generate(w148.begin(), w148.end(), std::ref(f16rng));
347 std::generate(w149.begin(), w149.end(), std::ref(f16rng));
348 std::generate(w150.begin(), w150.end(), std::ref(f16rng));
349 std::generate(w151.begin(), w151.end(), std::ref(f16rng));
350 std::generate(w152.begin(), w152.end(), std::ref(f16rng));
351 std::generate(w153.begin(), w153.end(), std::ref(f16rng));
352 std::generate(w154.begin(), w154.end(), std::ref(f16rng));
353 std::generate(w155.begin(), w155.end(), std::ref(f16rng));
354 std::generate(w156.begin(), w156.end(), std::ref(f16rng));
355 std::generate(w157.begin(), w157.end(), std::ref(f16rng));
356 std::generate(w158.begin(), w158.end(), std::ref(f16rng));
357 std::generate(w159.begin(), w159.end(), std::ref(f16rng));
358 std::generate(w160.begin(), w160.end(), std::ref(f16rng));
359 std::generate(w161.begin(), w161.end(), std::ref(f16rng));
360 std::generate(w162.begin(), w162.end(), std::ref(f16rng));
361 std::generate(w163.begin(), w163.end(), std::ref(f16rng));
362 std::generate(w164.begin(), w164.end(), std::ref(f16rng));
363 std::generate(w165.begin(), w165.end(), std::ref(f16rng));
364 std::generate(w166.begin(), w166.end(), std::ref(f16rng));
365 std::generate(w167.begin(), w167.end(), std::ref(f16rng));
366 std::generate(w168.begin(), w168.end(), std::ref(f16rng));
367 std::generate(w169.begin(), w169.end(), std::ref(f16rng));
368 std::generate(w170.begin(), w170.end(), std::ref(f16rng));
Marat Dukhanc068bb62019-10-04 13:24:39 -0700369
370 ExecutionPlan operators;
371 xnn_status status;
372
373 xnn_operator_t op0 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700374 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700375 0 /* top padding */, 1 /* right padding */,
376 1 /* bottom padding */, 0 /* left padding */,
377 3 /* kernel height */, 3 /* kernel width */,
378 2 /* subsampling height */, 2 /* subsampling width */,
379 1 /* dilation_height */, 1 /* dilation_width */,
380 1 /* groups */,
381 3 /* input channels per group */,
382 32 /* output_channels_per_group */,
383 3 /* input pixel stride */,
384 32 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800385 w65.data(), w66.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700386 0.0f /* output min */, 6.0f /* output max */,
387 0 /* flags */,
388 &op0);
389 if (status != xnn_status_success) {
390 std::cerr << "failed to create operation #0" << std::endl;
391 return ExecutionPlan();
392 }
393 operators.emplace_back(op0, xnn_delete_operator);
394
395 xnn_operator_t op1 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700396 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700397 1 /* top padding */, 1 /* right padding */,
398 1 /* bottom padding */, 1 /* left padding */,
399 3 /* kernel height */, 3 /* kernel width */,
400 1 /* subsampling height */, 1 /* subsampling width */,
401 1 /* dilation_height */, 1 /* dilation_width */,
402 32 /* groups */,
403 1 /* input channels per group */,
404 1 /* output_channels_per_group */,
405 32 /* input pixel stride */,
406 32 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800407 w67.data(), w68.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700408 0.0f /* output min */, 6.0f /* output max */,
409 0 /* flags */,
410 &op1);
411 if (status != xnn_status_success) {
412 std::cerr << "failed to create operation #1" << std::endl;
413 return ExecutionPlan();
414 }
415 operators.emplace_back(op1, xnn_delete_operator);
416
417 xnn_operator_t op2 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700418 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700419 0 /* top padding */, 0 /* right padding */,
420 0 /* bottom padding */, 0 /* left padding */,
421 1 /* kernel height */, 1 /* kernel width */,
422 1 /* subsampling height */, 1 /* subsampling width */,
423 1 /* dilation_height */, 1 /* dilation_width */,
424 1 /* groups */,
425 32 /* input channels per group */,
426 16 /* output_channels_per_group */,
427 32 /* input pixel stride */,
428 16 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800429 w69.data(), w70.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700430 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
431 0 /* flags */,
432 &op2);
433 if (status != xnn_status_success) {
434 std::cerr << "failed to create operation #2" << std::endl;
435 return ExecutionPlan();
436 }
437 operators.emplace_back(op2, xnn_delete_operator);
438
439 xnn_operator_t op3 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700440 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700441 0 /* top padding */, 0 /* right padding */,
442 0 /* bottom padding */, 0 /* left padding */,
443 1 /* kernel height */, 1 /* kernel width */,
444 1 /* subsampling height */, 1 /* subsampling width */,
445 1 /* dilation_height */, 1 /* dilation_width */,
446 1 /* groups */,
447 16 /* input channels per group */,
448 96 /* output_channels_per_group */,
449 16 /* input pixel stride */,
450 96 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800451 w71.data(), w72.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700452 0.0f /* output min */, 6.0f /* output max */,
453 0 /* flags */,
454 &op3);
455 if (status != xnn_status_success) {
456 std::cerr << "failed to create operation #3" << std::endl;
457 return ExecutionPlan();
458 }
459 operators.emplace_back(op3, xnn_delete_operator);
460
461 xnn_operator_t op4 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700462 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700463 0 /* top padding */, 1 /* right padding */,
464 1 /* bottom padding */, 0 /* left padding */,
465 3 /* kernel height */, 3 /* kernel width */,
466 2 /* subsampling height */, 2 /* subsampling width */,
467 1 /* dilation_height */, 1 /* dilation_width */,
468 96 /* groups */,
469 1 /* input channels per group */,
470 1 /* output_channels_per_group */,
471 96 /* input pixel stride */,
472 96 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800473 w73.data(), w74.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700474 0.0f /* output min */, 6.0f /* output max */,
475 0 /* flags */,
476 &op4);
477 if (status != xnn_status_success) {
478 std::cerr << "failed to create operation #4" << std::endl;
479 return ExecutionPlan();
480 }
481 operators.emplace_back(op4, xnn_delete_operator);
482
483 xnn_operator_t op5 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700484 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700485 0 /* top padding */, 0 /* right padding */,
486 0 /* bottom padding */, 0 /* left padding */,
487 1 /* kernel height */, 1 /* kernel width */,
488 1 /* subsampling height */, 1 /* subsampling width */,
489 1 /* dilation_height */, 1 /* dilation_width */,
490 1 /* groups */,
491 96 /* input channels per group */,
492 24 /* output_channels_per_group */,
493 96 /* input pixel stride */,
494 24 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800495 w75.data(), w76.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700496 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
497 0 /* flags */,
498 &op5);
499 if (status != xnn_status_success) {
500 std::cerr << "failed to create operation #5" << std::endl;
501 return ExecutionPlan();
502 }
503 operators.emplace_back(op5, xnn_delete_operator);
504
505 xnn_operator_t op6 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700506 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700507 0 /* top padding */, 0 /* right padding */,
508 0 /* bottom padding */, 0 /* left padding */,
509 1 /* kernel height */, 1 /* kernel width */,
510 1 /* subsampling height */, 1 /* subsampling width */,
511 1 /* dilation_height */, 1 /* dilation_width */,
512 1 /* groups */,
513 24 /* input channels per group */,
514 144 /* output_channels_per_group */,
515 24 /* input pixel stride */,
516 144 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800517 w77.data(), w78.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700518 0.0f /* output min */, 6.0f /* output max */,
519 0 /* flags */,
520 &op6);
521 if (status != xnn_status_success) {
522 std::cerr << "failed to create operation #6" << std::endl;
523 return ExecutionPlan();
524 }
525 operators.emplace_back(op6, xnn_delete_operator);
526
527 xnn_operator_t op7 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700528 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700529 1 /* top padding */, 1 /* right padding */,
530 1 /* bottom padding */, 1 /* left padding */,
531 3 /* kernel height */, 3 /* kernel width */,
532 1 /* subsampling height */, 1 /* subsampling width */,
533 1 /* dilation_height */, 1 /* dilation_width */,
534 144 /* groups */,
535 1 /* input channels per group */,
536 1 /* output_channels_per_group */,
537 144 /* input pixel stride */,
538 144 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800539 w79.data(), w80.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700540 0.0f /* output min */, 6.0f /* output max */,
541 0 /* flags */,
542 &op7);
543 if (status != xnn_status_success) {
544 std::cerr << "failed to create operation #7" << std::endl;
545 return ExecutionPlan();
546 }
547 operators.emplace_back(op7, xnn_delete_operator);
548
549 xnn_operator_t op8 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700550 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700551 0 /* top padding */, 0 /* right padding */,
552 0 /* bottom padding */, 0 /* left padding */,
553 1 /* kernel height */, 1 /* kernel width */,
554 1 /* subsampling height */, 1 /* subsampling width */,
555 1 /* dilation_height */, 1 /* dilation_width */,
556 1 /* groups */,
557 144 /* input channels per group */,
558 24 /* output_channels_per_group */,
559 144 /* input pixel stride */,
560 24 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800561 w81.data(), w82.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700562 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
563 0 /* flags */,
564 &op8);
565 if (status != xnn_status_success) {
566 std::cerr << "failed to create operation #8" << std::endl;
567 return ExecutionPlan();
568 }
569 operators.emplace_back(op8, xnn_delete_operator);
570
571 xnn_operator_t op9 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700572 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700573 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
574 0 /* flags */,
575 &op9);
576 if (status != xnn_status_success) {
577 std::cerr << "failed to create operation #9" << std::endl;
578 return ExecutionPlan();
579 }
580 operators.emplace_back(op9, xnn_delete_operator);
581
582 xnn_operator_t op10 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700583 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700584 0 /* top padding */, 0 /* right padding */,
585 0 /* bottom padding */, 0 /* left padding */,
586 1 /* kernel height */, 1 /* kernel width */,
587 1 /* subsampling height */, 1 /* subsampling width */,
588 1 /* dilation_height */, 1 /* dilation_width */,
589 1 /* groups */,
590 24 /* input channels per group */,
591 144 /* output_channels_per_group */,
592 24 /* input pixel stride */,
593 144 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800594 w83.data(), w84.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700595 0.0f /* output min */, 6.0f /* output max */,
596 0 /* flags */,
597 &op10);
598 if (status != xnn_status_success) {
599 std::cerr << "failed to create operation #10" << std::endl;
600 return ExecutionPlan();
601 }
602 operators.emplace_back(op10, xnn_delete_operator);
603
604 xnn_operator_t op11 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700605 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700606 0 /* top padding */, 1 /* right padding */,
607 1 /* bottom padding */, 0 /* left padding */,
608 3 /* kernel height */, 3 /* kernel width */,
609 2 /* subsampling height */, 2 /* subsampling width */,
610 1 /* dilation_height */, 1 /* dilation_width */,
611 144 /* groups */,
612 1 /* input channels per group */,
613 1 /* output_channels_per_group */,
614 144 /* input pixel stride */,
615 144 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800616 w85.data(), w86.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700617 0.0f /* output min */, 6.0f /* output max */,
618 0 /* flags */,
619 &op11);
620 if (status != xnn_status_success) {
621 std::cerr << "failed to create operation #11" << std::endl;
622 return ExecutionPlan();
623 }
624 operators.emplace_back(op11, xnn_delete_operator);
625
626 xnn_operator_t op12 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700627 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700628 0 /* top padding */, 0 /* right padding */,
629 0 /* bottom padding */, 0 /* left padding */,
630 1 /* kernel height */, 1 /* kernel width */,
631 1 /* subsampling height */, 1 /* subsampling width */,
632 1 /* dilation_height */, 1 /* dilation_width */,
633 1 /* groups */,
634 144 /* input channels per group */,
635 32 /* output_channels_per_group */,
636 144 /* input pixel stride */,
637 32 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800638 w87.data(), w88.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700639 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
640 0 /* flags */,
641 &op12);
642 if (status != xnn_status_success) {
643 std::cerr << "failed to create operation #12" << std::endl;
644 return ExecutionPlan();
645 }
646 operators.emplace_back(op12, xnn_delete_operator);
647
648 xnn_operator_t op13 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700649 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700650 0 /* top padding */, 0 /* right padding */,
651 0 /* bottom padding */, 0 /* left padding */,
652 1 /* kernel height */, 1 /* kernel width */,
653 1 /* subsampling height */, 1 /* subsampling width */,
654 1 /* dilation_height */, 1 /* dilation_width */,
655 1 /* groups */,
656 32 /* input channels per group */,
657 192 /* output_channels_per_group */,
658 32 /* input pixel stride */,
659 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800660 w89.data(), w90.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700661 0.0f /* output min */, 6.0f /* output max */,
662 0 /* flags */,
663 &op13);
664 if (status != xnn_status_success) {
665 std::cerr << "failed to create operation #13" << std::endl;
666 return ExecutionPlan();
667 }
668 operators.emplace_back(op13, xnn_delete_operator);
669
670 xnn_operator_t op14 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700671 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700672 1 /* top padding */, 1 /* right padding */,
673 1 /* bottom padding */, 1 /* left padding */,
674 3 /* kernel height */, 3 /* kernel width */,
675 1 /* subsampling height */, 1 /* subsampling width */,
676 1 /* dilation_height */, 1 /* dilation_width */,
677 192 /* groups */,
678 1 /* input channels per group */,
679 1 /* output_channels_per_group */,
680 192 /* input pixel stride */,
681 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800682 w91.data(), w92.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700683 0.0f /* output min */, 6.0f /* output max */,
684 0 /* flags */,
685 &op14);
686 if (status != xnn_status_success) {
687 std::cerr << "failed to create operation #14" << std::endl;
688 return ExecutionPlan();
689 }
690 operators.emplace_back(op14, xnn_delete_operator);
691
692 xnn_operator_t op15 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700693 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700694 0 /* top padding */, 0 /* right padding */,
695 0 /* bottom padding */, 0 /* left padding */,
696 1 /* kernel height */, 1 /* kernel width */,
697 1 /* subsampling height */, 1 /* subsampling width */,
698 1 /* dilation_height */, 1 /* dilation_width */,
699 1 /* groups */,
700 192 /* input channels per group */,
701 32 /* output_channels_per_group */,
702 192 /* input pixel stride */,
703 32 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800704 w93.data(), w94.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700705 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
706 0 /* flags */,
707 &op15);
708 if (status != xnn_status_success) {
709 std::cerr << "failed to create operation #15" << std::endl;
710 return ExecutionPlan();
711 }
712 operators.emplace_back(op15, xnn_delete_operator);
713
714 xnn_operator_t op16 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700715 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700716 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
717 0 /* flags */,
718 &op16);
719 if (status != xnn_status_success) {
720 std::cerr << "failed to create operation #16" << std::endl;
721 return ExecutionPlan();
722 }
723 operators.emplace_back(op16, xnn_delete_operator);
724
725 xnn_operator_t op17 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700726 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700727 0 /* top padding */, 0 /* right padding */,
728 0 /* bottom padding */, 0 /* left padding */,
729 1 /* kernel height */, 1 /* kernel width */,
730 1 /* subsampling height */, 1 /* subsampling width */,
731 1 /* dilation_height */, 1 /* dilation_width */,
732 1 /* groups */,
733 32 /* input channels per group */,
734 192 /* output_channels_per_group */,
735 32 /* input pixel stride */,
736 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800737 w95.data(), w96.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700738 0.0f /* output min */, 6.0f /* output max */,
739 0 /* flags */,
740 &op17);
741 if (status != xnn_status_success) {
742 std::cerr << "failed to create operation #17" << std::endl;
743 return ExecutionPlan();
744 }
745 operators.emplace_back(op17, xnn_delete_operator);
746
747 xnn_operator_t op18 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700748 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700749 1 /* top padding */, 1 /* right padding */,
750 1 /* bottom padding */, 1 /* left padding */,
751 3 /* kernel height */, 3 /* kernel width */,
752 1 /* subsampling height */, 1 /* subsampling width */,
753 1 /* dilation_height */, 1 /* dilation_width */,
754 192 /* groups */,
755 1 /* input channels per group */,
756 1 /* output_channels_per_group */,
757 192 /* input pixel stride */,
758 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800759 w97.data(), w98.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700760 0.0f /* output min */, 6.0f /* output max */,
761 0 /* flags */,
762 &op18);
763 if (status != xnn_status_success) {
764 std::cerr << "failed to create operation #18" << std::endl;
765 return ExecutionPlan();
766 }
767 operators.emplace_back(op18, xnn_delete_operator);
768
769 xnn_operator_t op19 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700770 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700771 0 /* top padding */, 0 /* right padding */,
772 0 /* bottom padding */, 0 /* left padding */,
773 1 /* kernel height */, 1 /* kernel width */,
774 1 /* subsampling height */, 1 /* subsampling width */,
775 1 /* dilation_height */, 1 /* dilation_width */,
776 1 /* groups */,
777 192 /* input channels per group */,
778 32 /* output_channels_per_group */,
779 192 /* input pixel stride */,
780 32 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800781 w99.data(), w100.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700782 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
783 0 /* flags */,
784 &op19);
785 if (status != xnn_status_success) {
786 std::cerr << "failed to create operation #19" << std::endl;
787 return ExecutionPlan();
788 }
789 operators.emplace_back(op19, xnn_delete_operator);
790
791 xnn_operator_t op20 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700792 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700793 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
794 0 /* flags */,
795 &op20);
796 if (status != xnn_status_success) {
797 std::cerr << "failed to create operation #20" << std::endl;
798 return ExecutionPlan();
799 }
800 operators.emplace_back(op20, xnn_delete_operator);
801
802 xnn_operator_t op21 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700803 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700804 0 /* top padding */, 0 /* right padding */,
805 0 /* bottom padding */, 0 /* left padding */,
806 1 /* kernel height */, 1 /* kernel width */,
807 1 /* subsampling height */, 1 /* subsampling width */,
808 1 /* dilation_height */, 1 /* dilation_width */,
809 1 /* groups */,
810 32 /* input channels per group */,
811 192 /* output_channels_per_group */,
812 32 /* input pixel stride */,
813 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800814 w101.data(), w102.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700815 0.0f /* output min */, 6.0f /* output max */,
816 0 /* flags */,
817 &op21);
818 if (status != xnn_status_success) {
819 std::cerr << "failed to create operation #21" << std::endl;
820 return ExecutionPlan();
821 }
822 operators.emplace_back(op21, xnn_delete_operator);
823
824 xnn_operator_t op22 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700825 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700826 0 /* top padding */, 1 /* right padding */,
827 1 /* bottom padding */, 0 /* left padding */,
828 3 /* kernel height */, 3 /* kernel width */,
829 2 /* subsampling height */, 2 /* subsampling width */,
830 1 /* dilation_height */, 1 /* dilation_width */,
831 192 /* groups */,
832 1 /* input channels per group */,
833 1 /* output_channels_per_group */,
834 192 /* input pixel stride */,
835 192 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800836 w103.data(), w104.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700837 0.0f /* output min */, 6.0f /* output max */,
838 0 /* flags */,
839 &op22);
840 if (status != xnn_status_success) {
841 std::cerr << "failed to create operation #22" << std::endl;
842 return ExecutionPlan();
843 }
844 operators.emplace_back(op22, xnn_delete_operator);
845
846 xnn_operator_t op23 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700847 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700848 0 /* top padding */, 0 /* right padding */,
849 0 /* bottom padding */, 0 /* left padding */,
850 1 /* kernel height */, 1 /* kernel width */,
851 1 /* subsampling height */, 1 /* subsampling width */,
852 1 /* dilation_height */, 1 /* dilation_width */,
853 1 /* groups */,
854 192 /* input channels per group */,
855 64 /* output_channels_per_group */,
856 192 /* input pixel stride */,
857 64 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800858 w105.data(), w106.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700859 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
860 0 /* flags */,
861 &op23);
862 if (status != xnn_status_success) {
863 std::cerr << "failed to create operation #23" << std::endl;
864 return ExecutionPlan();
865 }
866 operators.emplace_back(op23, xnn_delete_operator);
867
868 xnn_operator_t op24 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700869 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700870 0 /* top padding */, 0 /* right padding */,
871 0 /* bottom padding */, 0 /* left padding */,
872 1 /* kernel height */, 1 /* kernel width */,
873 1 /* subsampling height */, 1 /* subsampling width */,
874 1 /* dilation_height */, 1 /* dilation_width */,
875 1 /* groups */,
876 64 /* input channels per group */,
877 384 /* output_channels_per_group */,
878 64 /* input pixel stride */,
879 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800880 w107.data(), w108.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700881 0.0f /* output min */, 6.0f /* output max */,
882 0 /* flags */,
883 &op24);
884 if (status != xnn_status_success) {
885 std::cerr << "failed to create operation #24" << std::endl;
886 return ExecutionPlan();
887 }
888 operators.emplace_back(op24, xnn_delete_operator);
889
890 xnn_operator_t op25 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700891 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700892 1 /* top padding */, 1 /* right padding */,
893 1 /* bottom padding */, 1 /* left padding */,
894 3 /* kernel height */, 3 /* kernel width */,
895 1 /* subsampling height */, 1 /* subsampling width */,
896 1 /* dilation_height */, 1 /* dilation_width */,
897 384 /* groups */,
898 1 /* input channels per group */,
899 1 /* output_channels_per_group */,
900 384 /* input pixel stride */,
901 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800902 w109.data(), w110.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700903 0.0f /* output min */, 6.0f /* output max */,
904 0 /* flags */,
905 &op25);
906 if (status != xnn_status_success) {
907 std::cerr << "failed to create operation #25" << std::endl;
908 return ExecutionPlan();
909 }
910 operators.emplace_back(op25, xnn_delete_operator);
911
912 xnn_operator_t op26 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700913 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700914 0 /* top padding */, 0 /* right padding */,
915 0 /* bottom padding */, 0 /* left padding */,
916 1 /* kernel height */, 1 /* kernel width */,
917 1 /* subsampling height */, 1 /* subsampling width */,
918 1 /* dilation_height */, 1 /* dilation_width */,
919 1 /* groups */,
920 384 /* input channels per group */,
921 64 /* output_channels_per_group */,
922 384 /* input pixel stride */,
923 64 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800924 w111.data(), w112.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700925 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
926 0 /* flags */,
927 &op26);
928 if (status != xnn_status_success) {
929 std::cerr << "failed to create operation #26" << std::endl;
930 return ExecutionPlan();
931 }
932 operators.emplace_back(op26, xnn_delete_operator);
933
934 xnn_operator_t op27 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700935 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700936 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
937 0 /* flags */,
938 &op27);
939 if (status != xnn_status_success) {
940 std::cerr << "failed to create operation #27" << std::endl;
941 return ExecutionPlan();
942 }
943 operators.emplace_back(op27, xnn_delete_operator);
944
945 xnn_operator_t op28 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700946 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700947 0 /* top padding */, 0 /* right padding */,
948 0 /* bottom padding */, 0 /* left padding */,
949 1 /* kernel height */, 1 /* kernel width */,
950 1 /* subsampling height */, 1 /* subsampling width */,
951 1 /* dilation_height */, 1 /* dilation_width */,
952 1 /* groups */,
953 64 /* input channels per group */,
954 384 /* output_channels_per_group */,
955 64 /* input pixel stride */,
956 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800957 w113.data(), w114.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700958 0.0f /* output min */, 6.0f /* output max */,
959 0 /* flags */,
960 &op28);
961 if (status != xnn_status_success) {
962 std::cerr << "failed to create operation #28" << std::endl;
963 return ExecutionPlan();
964 }
965 operators.emplace_back(op28, xnn_delete_operator);
966
967 xnn_operator_t op29 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700968 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700969 1 /* top padding */, 1 /* right padding */,
970 1 /* bottom padding */, 1 /* left padding */,
971 3 /* kernel height */, 3 /* kernel width */,
972 1 /* subsampling height */, 1 /* subsampling width */,
973 1 /* dilation_height */, 1 /* dilation_width */,
974 384 /* groups */,
975 1 /* input channels per group */,
976 1 /* output_channels_per_group */,
977 384 /* input pixel stride */,
978 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -0800979 w115.data(), w116.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -0700980 0.0f /* output min */, 6.0f /* output max */,
981 0 /* flags */,
982 &op29);
983 if (status != xnn_status_success) {
984 std::cerr << "failed to create operation #29" << std::endl;
985 return ExecutionPlan();
986 }
987 operators.emplace_back(op29, xnn_delete_operator);
988
989 xnn_operator_t op30 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -0700990 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -0700991 0 /* top padding */, 0 /* right padding */,
992 0 /* bottom padding */, 0 /* left padding */,
993 1 /* kernel height */, 1 /* kernel width */,
994 1 /* subsampling height */, 1 /* subsampling width */,
995 1 /* dilation_height */, 1 /* dilation_width */,
996 1 /* groups */,
997 384 /* input channels per group */,
998 64 /* output_channels_per_group */,
999 384 /* input pixel stride */,
1000 64 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001001 w117.data(), w118.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001002 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1003 0 /* flags */,
1004 &op30);
1005 if (status != xnn_status_success) {
1006 std::cerr << "failed to create operation #30" << std::endl;
1007 return ExecutionPlan();
1008 }
1009 operators.emplace_back(op30, xnn_delete_operator);
1010
1011 xnn_operator_t op31 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001012 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001013 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1014 0 /* flags */,
1015 &op31);
1016 if (status != xnn_status_success) {
1017 std::cerr << "failed to create operation #31" << std::endl;
1018 return ExecutionPlan();
1019 }
1020 operators.emplace_back(op31, xnn_delete_operator);
1021
1022 xnn_operator_t op32 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001023 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001024 0 /* top padding */, 0 /* right padding */,
1025 0 /* bottom padding */, 0 /* left padding */,
1026 1 /* kernel height */, 1 /* kernel width */,
1027 1 /* subsampling height */, 1 /* subsampling width */,
1028 1 /* dilation_height */, 1 /* dilation_width */,
1029 1 /* groups */,
1030 64 /* input channels per group */,
1031 384 /* output_channels_per_group */,
1032 64 /* input pixel stride */,
1033 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001034 w119.data(), w120.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001035 0.0f /* output min */, 6.0f /* output max */,
1036 0 /* flags */,
1037 &op32);
1038 if (status != xnn_status_success) {
1039 std::cerr << "failed to create operation #32" << std::endl;
1040 return ExecutionPlan();
1041 }
1042 operators.emplace_back(op32, xnn_delete_operator);
1043
1044 xnn_operator_t op33 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001045 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001046 1 /* top padding */, 1 /* right padding */,
1047 1 /* bottom padding */, 1 /* left padding */,
1048 3 /* kernel height */, 3 /* kernel width */,
1049 1 /* subsampling height */, 1 /* subsampling width */,
1050 1 /* dilation_height */, 1 /* dilation_width */,
1051 384 /* groups */,
1052 1 /* input channels per group */,
1053 1 /* output_channels_per_group */,
1054 384 /* input pixel stride */,
1055 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001056 w121.data(), w122.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001057 0.0f /* output min */, 6.0f /* output max */,
1058 0 /* flags */,
1059 &op33);
1060 if (status != xnn_status_success) {
1061 std::cerr << "failed to create operation #33" << std::endl;
1062 return ExecutionPlan();
1063 }
1064 operators.emplace_back(op33, xnn_delete_operator);
1065
1066 xnn_operator_t op34 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001067 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001068 0 /* top padding */, 0 /* right padding */,
1069 0 /* bottom padding */, 0 /* left padding */,
1070 1 /* kernel height */, 1 /* kernel width */,
1071 1 /* subsampling height */, 1 /* subsampling width */,
1072 1 /* dilation_height */, 1 /* dilation_width */,
1073 1 /* groups */,
1074 384 /* input channels per group */,
1075 64 /* output_channels_per_group */,
1076 384 /* input pixel stride */,
1077 64 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001078 w123.data(), w124.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001079 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1080 0 /* flags */,
1081 &op34);
1082 if (status != xnn_status_success) {
1083 std::cerr << "failed to create operation #34" << std::endl;
1084 return ExecutionPlan();
1085 }
1086 operators.emplace_back(op34, xnn_delete_operator);
1087
1088 xnn_operator_t op35 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001089 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001090 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1091 0 /* flags */,
1092 &op35);
1093 if (status != xnn_status_success) {
1094 std::cerr << "failed to create operation #35" << std::endl;
1095 return ExecutionPlan();
1096 }
1097 operators.emplace_back(op35, xnn_delete_operator);
1098
1099 xnn_operator_t op36 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001100 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001101 0 /* top padding */, 0 /* right padding */,
1102 0 /* bottom padding */, 0 /* left padding */,
1103 1 /* kernel height */, 1 /* kernel width */,
1104 1 /* subsampling height */, 1 /* subsampling width */,
1105 1 /* dilation_height */, 1 /* dilation_width */,
1106 1 /* groups */,
1107 64 /* input channels per group */,
1108 384 /* output_channels_per_group */,
1109 64 /* input pixel stride */,
1110 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001111 w125.data(), w126.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001112 0.0f /* output min */, 6.0f /* output max */,
1113 0 /* flags */,
1114 &op36);
1115 if (status != xnn_status_success) {
1116 std::cerr << "failed to create operation #36" << std::endl;
1117 return ExecutionPlan();
1118 }
1119 operators.emplace_back(op36, xnn_delete_operator);
1120
1121 xnn_operator_t op37 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001122 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001123 1 /* top padding */, 1 /* right padding */,
1124 1 /* bottom padding */, 1 /* left padding */,
1125 3 /* kernel height */, 3 /* kernel width */,
1126 1 /* subsampling height */, 1 /* subsampling width */,
1127 1 /* dilation_height */, 1 /* dilation_width */,
1128 384 /* groups */,
1129 1 /* input channels per group */,
1130 1 /* output_channels_per_group */,
1131 384 /* input pixel stride */,
1132 384 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001133 w127.data(), w128.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001134 0.0f /* output min */, 6.0f /* output max */,
1135 0 /* flags */,
1136 &op37);
1137 if (status != xnn_status_success) {
1138 std::cerr << "failed to create operation #37" << std::endl;
1139 return ExecutionPlan();
1140 }
1141 operators.emplace_back(op37, xnn_delete_operator);
1142
1143 xnn_operator_t op38 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001144 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001145 0 /* top padding */, 0 /* right padding */,
1146 0 /* bottom padding */, 0 /* left padding */,
1147 1 /* kernel height */, 1 /* kernel width */,
1148 1 /* subsampling height */, 1 /* subsampling width */,
1149 1 /* dilation_height */, 1 /* dilation_width */,
1150 1 /* groups */,
1151 384 /* input channels per group */,
1152 96 /* output_channels_per_group */,
1153 384 /* input pixel stride */,
1154 96 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001155 w129.data(), w130.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001156 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1157 0 /* flags */,
1158 &op38);
1159 if (status != xnn_status_success) {
1160 std::cerr << "failed to create operation #38" << std::endl;
1161 return ExecutionPlan();
1162 }
1163 operators.emplace_back(op38, xnn_delete_operator);
1164
1165 xnn_operator_t op39 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001166 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001167 0 /* top padding */, 0 /* right padding */,
1168 0 /* bottom padding */, 0 /* left padding */,
1169 1 /* kernel height */, 1 /* kernel width */,
1170 1 /* subsampling height */, 1 /* subsampling width */,
1171 1 /* dilation_height */, 1 /* dilation_width */,
1172 1 /* groups */,
1173 96 /* input channels per group */,
1174 576 /* output_channels_per_group */,
1175 96 /* input pixel stride */,
1176 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001177 w131.data(), w132.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001178 0.0f /* output min */, 6.0f /* output max */,
1179 0 /* flags */,
1180 &op39);
1181 if (status != xnn_status_success) {
1182 std::cerr << "failed to create operation #39" << std::endl;
1183 return ExecutionPlan();
1184 }
1185 operators.emplace_back(op39, xnn_delete_operator);
1186
1187 xnn_operator_t op40 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001188 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001189 1 /* top padding */, 1 /* right padding */,
1190 1 /* bottom padding */, 1 /* left padding */,
1191 3 /* kernel height */, 3 /* kernel width */,
1192 1 /* subsampling height */, 1 /* subsampling width */,
1193 1 /* dilation_height */, 1 /* dilation_width */,
1194 576 /* groups */,
1195 1 /* input channels per group */,
1196 1 /* output_channels_per_group */,
1197 576 /* input pixel stride */,
1198 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001199 w133.data(), w134.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001200 0.0f /* output min */, 6.0f /* output max */,
1201 0 /* flags */,
1202 &op40);
1203 if (status != xnn_status_success) {
1204 std::cerr << "failed to create operation #40" << std::endl;
1205 return ExecutionPlan();
1206 }
1207 operators.emplace_back(op40, xnn_delete_operator);
1208
1209 xnn_operator_t op41 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001210 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001211 0 /* top padding */, 0 /* right padding */,
1212 0 /* bottom padding */, 0 /* left padding */,
1213 1 /* kernel height */, 1 /* kernel width */,
1214 1 /* subsampling height */, 1 /* subsampling width */,
1215 1 /* dilation_height */, 1 /* dilation_width */,
1216 1 /* groups */,
1217 576 /* input channels per group */,
1218 96 /* output_channels_per_group */,
1219 576 /* input pixel stride */,
1220 96 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001221 w135.data(), w136.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001222 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1223 0 /* flags */,
1224 &op41);
1225 if (status != xnn_status_success) {
1226 std::cerr << "failed to create operation #41" << std::endl;
1227 return ExecutionPlan();
1228 }
1229 operators.emplace_back(op41, xnn_delete_operator);
1230
1231 xnn_operator_t op42 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001232 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001233 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1234 0 /* flags */,
1235 &op42);
1236 if (status != xnn_status_success) {
1237 std::cerr << "failed to create operation #42" << std::endl;
1238 return ExecutionPlan();
1239 }
1240 operators.emplace_back(op42, xnn_delete_operator);
1241
1242 xnn_operator_t op43 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001243 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001244 0 /* top padding */, 0 /* right padding */,
1245 0 /* bottom padding */, 0 /* left padding */,
1246 1 /* kernel height */, 1 /* kernel width */,
1247 1 /* subsampling height */, 1 /* subsampling width */,
1248 1 /* dilation_height */, 1 /* dilation_width */,
1249 1 /* groups */,
1250 96 /* input channels per group */,
1251 576 /* output_channels_per_group */,
1252 96 /* input pixel stride */,
1253 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001254 w137.data(), w138.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001255 0.0f /* output min */, 6.0f /* output max */,
1256 0 /* flags */,
1257 &op43);
1258 if (status != xnn_status_success) {
1259 std::cerr << "failed to create operation #43" << std::endl;
1260 return ExecutionPlan();
1261 }
1262 operators.emplace_back(op43, xnn_delete_operator);
1263
1264 xnn_operator_t op44 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001265 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001266 1 /* top padding */, 1 /* right padding */,
1267 1 /* bottom padding */, 1 /* left padding */,
1268 3 /* kernel height */, 3 /* kernel width */,
1269 1 /* subsampling height */, 1 /* subsampling width */,
1270 1 /* dilation_height */, 1 /* dilation_width */,
1271 576 /* groups */,
1272 1 /* input channels per group */,
1273 1 /* output_channels_per_group */,
1274 576 /* input pixel stride */,
1275 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001276 w139.data(), w140.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001277 0.0f /* output min */, 6.0f /* output max */,
1278 0 /* flags */,
1279 &op44);
1280 if (status != xnn_status_success) {
1281 std::cerr << "failed to create operation #44" << std::endl;
1282 return ExecutionPlan();
1283 }
1284 operators.emplace_back(op44, xnn_delete_operator);
1285
1286 xnn_operator_t op45 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001287 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001288 0 /* top padding */, 0 /* right padding */,
1289 0 /* bottom padding */, 0 /* left padding */,
1290 1 /* kernel height */, 1 /* kernel width */,
1291 1 /* subsampling height */, 1 /* subsampling width */,
1292 1 /* dilation_height */, 1 /* dilation_width */,
1293 1 /* groups */,
1294 576 /* input channels per group */,
1295 96 /* output_channels_per_group */,
1296 576 /* input pixel stride */,
1297 96 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001298 w141.data(), w142.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001299 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1300 0 /* flags */,
1301 &op45);
1302 if (status != xnn_status_success) {
1303 std::cerr << "failed to create operation #45" << std::endl;
1304 return ExecutionPlan();
1305 }
1306 operators.emplace_back(op45, xnn_delete_operator);
1307
1308 xnn_operator_t op46 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001309 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001310 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1311 0 /* flags */,
1312 &op46);
1313 if (status != xnn_status_success) {
1314 std::cerr << "failed to create operation #46" << std::endl;
1315 return ExecutionPlan();
1316 }
1317 operators.emplace_back(op46, xnn_delete_operator);
1318
1319 xnn_operator_t op47 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001320 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001321 0 /* top padding */, 0 /* right padding */,
1322 0 /* bottom padding */, 0 /* left padding */,
1323 1 /* kernel height */, 1 /* kernel width */,
1324 1 /* subsampling height */, 1 /* subsampling width */,
1325 1 /* dilation_height */, 1 /* dilation_width */,
1326 1 /* groups */,
1327 96 /* input channels per group */,
1328 576 /* output_channels_per_group */,
1329 96 /* input pixel stride */,
1330 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001331 w143.data(), w144.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001332 0.0f /* output min */, 6.0f /* output max */,
1333 0 /* flags */,
1334 &op47);
1335 if (status != xnn_status_success) {
1336 std::cerr << "failed to create operation #47" << std::endl;
1337 return ExecutionPlan();
1338 }
1339 operators.emplace_back(op47, xnn_delete_operator);
1340
1341 xnn_operator_t op48 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001342 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001343 0 /* top padding */, 1 /* right padding */,
1344 1 /* bottom padding */, 0 /* left padding */,
1345 3 /* kernel height */, 3 /* kernel width */,
1346 2 /* subsampling height */, 2 /* subsampling width */,
1347 1 /* dilation_height */, 1 /* dilation_width */,
1348 576 /* groups */,
1349 1 /* input channels per group */,
1350 1 /* output_channels_per_group */,
1351 576 /* input pixel stride */,
1352 576 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001353 w145.data(), w146.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001354 0.0f /* output min */, 6.0f /* output max */,
1355 0 /* flags */,
1356 &op48);
1357 if (status != xnn_status_success) {
1358 std::cerr << "failed to create operation #48" << std::endl;
1359 return ExecutionPlan();
1360 }
1361 operators.emplace_back(op48, xnn_delete_operator);
1362
1363 xnn_operator_t op49 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001364 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001365 0 /* top padding */, 0 /* right padding */,
1366 0 /* bottom padding */, 0 /* left padding */,
1367 1 /* kernel height */, 1 /* kernel width */,
1368 1 /* subsampling height */, 1 /* subsampling width */,
1369 1 /* dilation_height */, 1 /* dilation_width */,
1370 1 /* groups */,
1371 576 /* input channels per group */,
1372 160 /* output_channels_per_group */,
1373 576 /* input pixel stride */,
1374 160 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001375 w147.data(), w148.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001376 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1377 0 /* flags */,
1378 &op49);
1379 if (status != xnn_status_success) {
1380 std::cerr << "failed to create operation #49" << std::endl;
1381 return ExecutionPlan();
1382 }
1383 operators.emplace_back(op49, xnn_delete_operator);
1384
1385 xnn_operator_t op50 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001386 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001387 0 /* top padding */, 0 /* right padding */,
1388 0 /* bottom padding */, 0 /* left padding */,
1389 1 /* kernel height */, 1 /* kernel width */,
1390 1 /* subsampling height */, 1 /* subsampling width */,
1391 1 /* dilation_height */, 1 /* dilation_width */,
1392 1 /* groups */,
1393 160 /* input channels per group */,
1394 960 /* output_channels_per_group */,
1395 160 /* input pixel stride */,
1396 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001397 w149.data(), w150.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001398 0.0f /* output min */, 6.0f /* output max */,
1399 0 /* flags */,
1400 &op50);
1401 if (status != xnn_status_success) {
1402 std::cerr << "failed to create operation #50" << std::endl;
1403 return ExecutionPlan();
1404 }
1405 operators.emplace_back(op50, xnn_delete_operator);
1406
1407 xnn_operator_t op51 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001408 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001409 1 /* top padding */, 1 /* right padding */,
1410 1 /* bottom padding */, 1 /* left padding */,
1411 3 /* kernel height */, 3 /* kernel width */,
1412 1 /* subsampling height */, 1 /* subsampling width */,
1413 1 /* dilation_height */, 1 /* dilation_width */,
1414 960 /* groups */,
1415 1 /* input channels per group */,
1416 1 /* output_channels_per_group */,
1417 960 /* input pixel stride */,
1418 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001419 w151.data(), w152.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001420 0.0f /* output min */, 6.0f /* output max */,
1421 0 /* flags */,
1422 &op51);
1423 if (status != xnn_status_success) {
1424 std::cerr << "failed to create operation #51" << std::endl;
1425 return ExecutionPlan();
1426 }
1427 operators.emplace_back(op51, xnn_delete_operator);
1428
1429 xnn_operator_t op52 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001430 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001431 0 /* top padding */, 0 /* right padding */,
1432 0 /* bottom padding */, 0 /* left padding */,
1433 1 /* kernel height */, 1 /* kernel width */,
1434 1 /* subsampling height */, 1 /* subsampling width */,
1435 1 /* dilation_height */, 1 /* dilation_width */,
1436 1 /* groups */,
1437 960 /* input channels per group */,
1438 160 /* output_channels_per_group */,
1439 960 /* input pixel stride */,
1440 160 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001441 w153.data(), w154.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001442 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1443 0 /* flags */,
1444 &op52);
1445 if (status != xnn_status_success) {
1446 std::cerr << "failed to create operation #52" << std::endl;
1447 return ExecutionPlan();
1448 }
1449 operators.emplace_back(op52, xnn_delete_operator);
1450
1451 xnn_operator_t op53 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001452 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001453 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1454 0 /* flags */,
1455 &op53);
1456 if (status != xnn_status_success) {
1457 std::cerr << "failed to create operation #53" << std::endl;
1458 return ExecutionPlan();
1459 }
1460 operators.emplace_back(op53, xnn_delete_operator);
1461
1462 xnn_operator_t op54 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001463 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001464 0 /* top padding */, 0 /* right padding */,
1465 0 /* bottom padding */, 0 /* left padding */,
1466 1 /* kernel height */, 1 /* kernel width */,
1467 1 /* subsampling height */, 1 /* subsampling width */,
1468 1 /* dilation_height */, 1 /* dilation_width */,
1469 1 /* groups */,
1470 160 /* input channels per group */,
1471 960 /* output_channels_per_group */,
1472 160 /* input pixel stride */,
1473 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001474 w155.data(), w156.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001475 0.0f /* output min */, 6.0f /* output max */,
1476 0 /* flags */,
1477 &op54);
1478 if (status != xnn_status_success) {
1479 std::cerr << "failed to create operation #54" << std::endl;
1480 return ExecutionPlan();
1481 }
1482 operators.emplace_back(op54, xnn_delete_operator);
1483
1484 xnn_operator_t op55 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001485 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001486 1 /* top padding */, 1 /* right padding */,
1487 1 /* bottom padding */, 1 /* left padding */,
1488 3 /* kernel height */, 3 /* kernel width */,
1489 1 /* subsampling height */, 1 /* subsampling width */,
1490 1 /* dilation_height */, 1 /* dilation_width */,
1491 960 /* groups */,
1492 1 /* input channels per group */,
1493 1 /* output_channels_per_group */,
1494 960 /* input pixel stride */,
1495 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001496 w157.data(), w158.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001497 0.0f /* output min */, 6.0f /* output max */,
1498 0 /* flags */,
1499 &op55);
1500 if (status != xnn_status_success) {
1501 std::cerr << "failed to create operation #55" << std::endl;
1502 return ExecutionPlan();
1503 }
1504 operators.emplace_back(op55, xnn_delete_operator);
1505
1506 xnn_operator_t op56 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001507 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001508 0 /* top padding */, 0 /* right padding */,
1509 0 /* bottom padding */, 0 /* left padding */,
1510 1 /* kernel height */, 1 /* kernel width */,
1511 1 /* subsampling height */, 1 /* subsampling width */,
1512 1 /* dilation_height */, 1 /* dilation_width */,
1513 1 /* groups */,
1514 960 /* input channels per group */,
1515 160 /* output_channels_per_group */,
1516 960 /* input pixel stride */,
1517 160 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001518 w159.data(), w160.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001519 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1520 0 /* flags */,
1521 &op56);
1522 if (status != xnn_status_success) {
1523 std::cerr << "failed to create operation #56" << std::endl;
1524 return ExecutionPlan();
1525 }
1526 operators.emplace_back(op56, xnn_delete_operator);
1527
1528 xnn_operator_t op57 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001529 status = xnn_create_add_nd_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001530 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1531 0 /* flags */,
1532 &op57);
1533 if (status != xnn_status_success) {
1534 std::cerr << "failed to create operation #57" << std::endl;
1535 return ExecutionPlan();
1536 }
1537 operators.emplace_back(op57, xnn_delete_operator);
1538
1539 xnn_operator_t op58 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001540 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001541 0 /* top padding */, 0 /* right padding */,
1542 0 /* bottom padding */, 0 /* left padding */,
1543 1 /* kernel height */, 1 /* kernel width */,
1544 1 /* subsampling height */, 1 /* subsampling width */,
1545 1 /* dilation_height */, 1 /* dilation_width */,
1546 1 /* groups */,
1547 160 /* input channels per group */,
1548 960 /* output_channels_per_group */,
1549 160 /* input pixel stride */,
1550 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001551 w161.data(), w162.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001552 0.0f /* output min */, 6.0f /* output max */,
1553 0 /* flags */,
1554 &op58);
1555 if (status != xnn_status_success) {
1556 std::cerr << "failed to create operation #58" << std::endl;
1557 return ExecutionPlan();
1558 }
1559 operators.emplace_back(op58, xnn_delete_operator);
1560
1561 xnn_operator_t op59 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001562 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001563 1 /* top padding */, 1 /* right padding */,
1564 1 /* bottom padding */, 1 /* left padding */,
1565 3 /* kernel height */, 3 /* kernel width */,
1566 1 /* subsampling height */, 1 /* subsampling width */,
1567 1 /* dilation_height */, 1 /* dilation_width */,
1568 960 /* groups */,
1569 1 /* input channels per group */,
1570 1 /* output_channels_per_group */,
1571 960 /* input pixel stride */,
1572 960 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001573 w163.data(), w164.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001574 0.0f /* output min */, 6.0f /* output max */,
1575 0 /* flags */,
1576 &op59);
1577 if (status != xnn_status_success) {
1578 std::cerr << "failed to create operation #59" << std::endl;
1579 return ExecutionPlan();
1580 }
1581 operators.emplace_back(op59, xnn_delete_operator);
1582
1583 xnn_operator_t op60 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001584 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001585 0 /* top padding */, 0 /* right padding */,
1586 0 /* bottom padding */, 0 /* left padding */,
1587 1 /* kernel height */, 1 /* kernel width */,
1588 1 /* subsampling height */, 1 /* subsampling width */,
1589 1 /* dilation_height */, 1 /* dilation_width */,
1590 1 /* groups */,
1591 960 /* input channels per group */,
1592 320 /* output_channels_per_group */,
1593 960 /* input pixel stride */,
1594 320 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001595 w165.data(), w166.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001596 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1597 0 /* flags */,
1598 &op60);
1599 if (status != xnn_status_success) {
1600 std::cerr << "failed to create operation #60" << std::endl;
1601 return ExecutionPlan();
1602 }
1603 operators.emplace_back(op60, xnn_delete_operator);
1604
1605 xnn_operator_t op61 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001606 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001607 0 /* top padding */, 0 /* right padding */,
1608 0 /* bottom padding */, 0 /* left padding */,
1609 1 /* kernel height */, 1 /* kernel width */,
1610 1 /* subsampling height */, 1 /* subsampling width */,
1611 1 /* dilation_height */, 1 /* dilation_width */,
1612 1 /* groups */,
1613 320 /* input channels per group */,
1614 1280 /* output_channels_per_group */,
1615 320 /* input pixel stride */,
1616 1280 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001617 w167.data(), w168.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001618 0.0f /* output min */, 6.0f /* output max */,
1619 0 /* flags */,
1620 &op61);
1621 if (status != xnn_status_success) {
1622 std::cerr << "failed to create operation #61" << std::endl;
1623 return ExecutionPlan();
1624 }
1625 operators.emplace_back(op61, xnn_delete_operator);
1626
1627 xnn_operator_t op62 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001628 status = xnn_create_global_average_pooling_nwc_f16(
Marat Dukhanfd582932019-11-20 19:53:36 -08001629 1280 /* channels */, 1280 /* input stride */, 1280 /* output stride */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001630 -std::numeric_limits<float>::infinity(), std::numeric_limits<float>::infinity(),
1631 0 /* flags */,
1632 &op62);
1633 if (status != xnn_status_success) {
1634 std::cerr << "failed to create operation #62" << std::endl;
1635 return ExecutionPlan();
1636 }
1637 operators.emplace_back(op62, xnn_delete_operator);
1638
1639 xnn_operator_t op63 = nullptr;
Marat Dukhan270a2c42020-06-26 16:45:52 -07001640 status = xnn_create_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001641 0 /* top padding */, 0 /* right padding */,
1642 0 /* bottom padding */, 0 /* left padding */,
1643 1 /* kernel height */, 1 /* kernel width */,
1644 1 /* subsampling height */, 1 /* subsampling width */,
1645 1 /* dilation_height */, 1 /* dilation_width */,
1646 1 /* groups */,
1647 1280 /* input channels per group */,
1648 1001 /* output_channels_per_group */,
1649 1280 /* input pixel stride */,
1650 1001 /* output pixel stride */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001651 w169.data(), w170.data(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07001652 -std::numeric_limits<float>::infinity() /* output min */, std::numeric_limits<float>::infinity() /* output max */,
1653 0 /* flags */,
1654 &op63);
1655 if (status != xnn_status_success) {
1656 std::cerr << "failed to create operation #63" << std::endl;
1657 return ExecutionPlan();
1658 }
1659 operators.emplace_back(op63, xnn_delete_operator);
1660
1661
1662
Marat Dukhan270a2c42020-06-26 16:45:52 -07001663 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001664 op0,
1665 1 /* batch size */, 224 /* input height */, 224 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001666 v0.data() /* input */, v1.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001667 threadpool /* threadpool */);
1668 if (status != xnn_status_success) {
1669 std::cerr << "failed to setup operation #0" << std::endl;
1670 return ExecutionPlan();
1671 }
1672
Marat Dukhan270a2c42020-06-26 16:45:52 -07001673 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001674 op1,
1675 1 /* batch size */, 112 /* input height */, 112 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001676 v1.data() /* input */, v2.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001677 threadpool /* threadpool */);
1678 if (status != xnn_status_success) {
1679 std::cerr << "failed to setup operation #1" << std::endl;
1680 return ExecutionPlan();
1681 }
1682
Marat Dukhan270a2c42020-06-26 16:45:52 -07001683 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001684 op2,
1685 1 /* batch size */, 112 /* input height */, 112 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001686 v2.data() /* input */, v3.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001687 threadpool /* threadpool */);
1688 if (status != xnn_status_success) {
1689 std::cerr << "failed to setup operation #2" << std::endl;
1690 return ExecutionPlan();
1691 }
1692
Marat Dukhan270a2c42020-06-26 16:45:52 -07001693 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001694 op3,
1695 1 /* batch size */, 112 /* input height */, 112 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001696 v3.data() /* input */, v4.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001697 threadpool /* threadpool */);
1698 if (status != xnn_status_success) {
1699 std::cerr << "failed to setup operation #3" << std::endl;
1700 return ExecutionPlan();
1701 }
1702
Marat Dukhan270a2c42020-06-26 16:45:52 -07001703 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001704 op4,
1705 1 /* batch size */, 112 /* input height */, 112 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001706 v4.data() /* input */, v5.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001707 threadpool /* threadpool */);
1708 if (status != xnn_status_success) {
1709 std::cerr << "failed to setup operation #4" << std::endl;
1710 return ExecutionPlan();
1711 }
1712
Marat Dukhan270a2c42020-06-26 16:45:52 -07001713 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001714 op5,
1715 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001716 v5.data() /* input */, v6.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001717 threadpool /* threadpool */);
1718 if (status != xnn_status_success) {
1719 std::cerr << "failed to setup operation #5" << std::endl;
1720 return ExecutionPlan();
1721 }
1722
Marat Dukhan270a2c42020-06-26 16:45:52 -07001723 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001724 op6,
1725 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001726 v6.data() /* input */, v7.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001727 threadpool /* threadpool */);
1728 if (status != xnn_status_success) {
1729 std::cerr << "failed to setup operation #6" << std::endl;
1730 return ExecutionPlan();
1731 }
1732
Marat Dukhan270a2c42020-06-26 16:45:52 -07001733 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001734 op7,
1735 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001736 v7.data() /* input */, v8.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001737 threadpool /* threadpool */);
1738 if (status != xnn_status_success) {
1739 std::cerr << "failed to setup operation #7" << std::endl;
1740 return ExecutionPlan();
1741 }
1742
Marat Dukhan270a2c42020-06-26 16:45:52 -07001743 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001744 op8,
1745 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001746 v8.data() /* input */, v9.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001747 threadpool /* threadpool */);
1748 if (status != xnn_status_success) {
1749 std::cerr << "failed to setup operation #8" << std::endl;
1750 return ExecutionPlan();
1751 }
1752
Marat Dukhanb2164a32020-06-04 19:05:27 -07001753 {
1754 const size_t a_shape[] = { 1, 56, 56, 24 };
1755 const size_t b_shape[] = { 1, 56, 56, 24 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07001756 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07001757 op9,
1758 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001759 v9.data() /* a */, v6.data() /* b */, v10.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07001760 threadpool /* threadpool */);
1761 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07001762 if (status != xnn_status_success) {
1763 std::cerr << "failed to setup operation #9" << std::endl;
1764 return ExecutionPlan();
1765 }
1766
Marat Dukhan270a2c42020-06-26 16:45:52 -07001767 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001768 op10,
1769 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001770 v10.data() /* input */, v11.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001771 threadpool /* threadpool */);
1772 if (status != xnn_status_success) {
1773 std::cerr << "failed to setup operation #10" << std::endl;
1774 return ExecutionPlan();
1775 }
1776
Marat Dukhan270a2c42020-06-26 16:45:52 -07001777 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001778 op11,
1779 1 /* batch size */, 56 /* input height */, 56 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001780 v11.data() /* input */, v12.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001781 threadpool /* threadpool */);
1782 if (status != xnn_status_success) {
1783 std::cerr << "failed to setup operation #11" << std::endl;
1784 return ExecutionPlan();
1785 }
1786
Marat Dukhan270a2c42020-06-26 16:45:52 -07001787 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001788 op12,
1789 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001790 v12.data() /* input */, v13.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001791 threadpool /* threadpool */);
1792 if (status != xnn_status_success) {
1793 std::cerr << "failed to setup operation #12" << std::endl;
1794 return ExecutionPlan();
1795 }
1796
Marat Dukhan270a2c42020-06-26 16:45:52 -07001797 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001798 op13,
1799 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001800 v13.data() /* input */, v14.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001801 threadpool /* threadpool */);
1802 if (status != xnn_status_success) {
1803 std::cerr << "failed to setup operation #13" << std::endl;
1804 return ExecutionPlan();
1805 }
1806
Marat Dukhan270a2c42020-06-26 16:45:52 -07001807 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001808 op14,
1809 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001810 v14.data() /* input */, v15.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001811 threadpool /* threadpool */);
1812 if (status != xnn_status_success) {
1813 std::cerr << "failed to setup operation #14" << std::endl;
1814 return ExecutionPlan();
1815 }
1816
Marat Dukhan270a2c42020-06-26 16:45:52 -07001817 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001818 op15,
1819 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001820 v15.data() /* input */, v16.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001821 threadpool /* threadpool */);
1822 if (status != xnn_status_success) {
1823 std::cerr << "failed to setup operation #15" << std::endl;
1824 return ExecutionPlan();
1825 }
1826
Marat Dukhanb2164a32020-06-04 19:05:27 -07001827 {
1828 const size_t a_shape[] = { 1, 28, 28, 32 };
1829 const size_t b_shape[] = { 1, 28, 28, 32 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07001830 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07001831 op16,
1832 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001833 v16.data() /* a */, v13.data() /* b */, v17.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07001834 threadpool /* threadpool */);
1835 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07001836 if (status != xnn_status_success) {
1837 std::cerr << "failed to setup operation #16" << std::endl;
1838 return ExecutionPlan();
1839 }
1840
Marat Dukhan270a2c42020-06-26 16:45:52 -07001841 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001842 op17,
1843 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001844 v17.data() /* input */, v18.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001845 threadpool /* threadpool */);
1846 if (status != xnn_status_success) {
1847 std::cerr << "failed to setup operation #17" << std::endl;
1848 return ExecutionPlan();
1849 }
1850
Marat Dukhan270a2c42020-06-26 16:45:52 -07001851 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001852 op18,
1853 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001854 v18.data() /* input */, v19.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001855 threadpool /* threadpool */);
1856 if (status != xnn_status_success) {
1857 std::cerr << "failed to setup operation #18" << std::endl;
1858 return ExecutionPlan();
1859 }
1860
Marat Dukhan270a2c42020-06-26 16:45:52 -07001861 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001862 op19,
1863 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001864 v19.data() /* input */, v20.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001865 threadpool /* threadpool */);
1866 if (status != xnn_status_success) {
1867 std::cerr << "failed to setup operation #19" << std::endl;
1868 return ExecutionPlan();
1869 }
1870
Marat Dukhanb2164a32020-06-04 19:05:27 -07001871 {
1872 const size_t a_shape[] = { 1, 28, 28, 32 };
1873 const size_t b_shape[] = { 1, 28, 28, 32 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07001874 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07001875 op20,
1876 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001877 v20.data() /* a */, v17.data() /* b */, v21.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07001878 threadpool /* threadpool */);
1879 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07001880 if (status != xnn_status_success) {
1881 std::cerr << "failed to setup operation #20" << std::endl;
1882 return ExecutionPlan();
1883 }
1884
Marat Dukhan270a2c42020-06-26 16:45:52 -07001885 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001886 op21,
1887 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001888 v21.data() /* input */, v22.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001889 threadpool /* threadpool */);
1890 if (status != xnn_status_success) {
1891 std::cerr << "failed to setup operation #21" << std::endl;
1892 return ExecutionPlan();
1893 }
1894
Marat Dukhan270a2c42020-06-26 16:45:52 -07001895 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001896 op22,
1897 1 /* batch size */, 28 /* input height */, 28 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001898 v22.data() /* input */, v23.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001899 threadpool /* threadpool */);
1900 if (status != xnn_status_success) {
1901 std::cerr << "failed to setup operation #22" << std::endl;
1902 return ExecutionPlan();
1903 }
1904
Marat Dukhan270a2c42020-06-26 16:45:52 -07001905 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001906 op23,
1907 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001908 v23.data() /* input */, v24.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001909 threadpool /* threadpool */);
1910 if (status != xnn_status_success) {
1911 std::cerr << "failed to setup operation #23" << std::endl;
1912 return ExecutionPlan();
1913 }
1914
Marat Dukhan270a2c42020-06-26 16:45:52 -07001915 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001916 op24,
1917 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001918 v24.data() /* input */, v25.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001919 threadpool /* threadpool */);
1920 if (status != xnn_status_success) {
1921 std::cerr << "failed to setup operation #24" << std::endl;
1922 return ExecutionPlan();
1923 }
1924
Marat Dukhan270a2c42020-06-26 16:45:52 -07001925 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001926 op25,
1927 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001928 v25.data() /* input */, v26.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001929 threadpool /* threadpool */);
1930 if (status != xnn_status_success) {
1931 std::cerr << "failed to setup operation #25" << std::endl;
1932 return ExecutionPlan();
1933 }
1934
Marat Dukhan270a2c42020-06-26 16:45:52 -07001935 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001936 op26,
1937 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001938 v26.data() /* input */, v27.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001939 threadpool /* threadpool */);
1940 if (status != xnn_status_success) {
1941 std::cerr << "failed to setup operation #26" << std::endl;
1942 return ExecutionPlan();
1943 }
1944
Marat Dukhanb2164a32020-06-04 19:05:27 -07001945 {
1946 const size_t a_shape[] = { 1, 14, 14, 64 };
1947 const size_t b_shape[] = { 1, 14, 14, 64 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07001948 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07001949 op27,
1950 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001951 v27.data() /* a */, v24.data() /* b */, v28.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07001952 threadpool /* threadpool */);
1953 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07001954 if (status != xnn_status_success) {
1955 std::cerr << "failed to setup operation #27" << std::endl;
1956 return ExecutionPlan();
1957 }
1958
Marat Dukhan270a2c42020-06-26 16:45:52 -07001959 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001960 op28,
1961 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001962 v28.data() /* input */, v29.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001963 threadpool /* threadpool */);
1964 if (status != xnn_status_success) {
1965 std::cerr << "failed to setup operation #28" << std::endl;
1966 return ExecutionPlan();
1967 }
1968
Marat Dukhan270a2c42020-06-26 16:45:52 -07001969 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001970 op29,
1971 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001972 v29.data() /* input */, v30.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001973 threadpool /* threadpool */);
1974 if (status != xnn_status_success) {
1975 std::cerr << "failed to setup operation #29" << std::endl;
1976 return ExecutionPlan();
1977 }
1978
Marat Dukhan270a2c42020-06-26 16:45:52 -07001979 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001980 op30,
1981 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001982 v30.data() /* input */, v31.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07001983 threadpool /* threadpool */);
1984 if (status != xnn_status_success) {
1985 std::cerr << "failed to setup operation #30" << std::endl;
1986 return ExecutionPlan();
1987 }
1988
Marat Dukhanb2164a32020-06-04 19:05:27 -07001989 {
1990 const size_t a_shape[] = { 1, 14, 14, 64 };
1991 const size_t b_shape[] = { 1, 14, 14, 64 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07001992 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07001993 op31,
1994 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08001995 v31.data() /* a */, v28.data() /* b */, v32.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07001996 threadpool /* threadpool */);
1997 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07001998 if (status != xnn_status_success) {
1999 std::cerr << "failed to setup operation #31" << std::endl;
2000 return ExecutionPlan();
2001 }
2002
Marat Dukhan270a2c42020-06-26 16:45:52 -07002003 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002004 op32,
2005 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002006 v32.data() /* input */, v33.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002007 threadpool /* threadpool */);
2008 if (status != xnn_status_success) {
2009 std::cerr << "failed to setup operation #32" << std::endl;
2010 return ExecutionPlan();
2011 }
2012
Marat Dukhan270a2c42020-06-26 16:45:52 -07002013 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002014 op33,
2015 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002016 v33.data() /* input */, v34.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002017 threadpool /* threadpool */);
2018 if (status != xnn_status_success) {
2019 std::cerr << "failed to setup operation #33" << std::endl;
2020 return ExecutionPlan();
2021 }
2022
Marat Dukhan270a2c42020-06-26 16:45:52 -07002023 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002024 op34,
2025 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002026 v34.data() /* input */, v35.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002027 threadpool /* threadpool */);
2028 if (status != xnn_status_success) {
2029 std::cerr << "failed to setup operation #34" << std::endl;
2030 return ExecutionPlan();
2031 }
2032
Marat Dukhanb2164a32020-06-04 19:05:27 -07002033 {
2034 const size_t a_shape[] = { 1, 14, 14, 64 };
2035 const size_t b_shape[] = { 1, 14, 14, 64 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07002036 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07002037 op35,
2038 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002039 v35.data() /* a */, v32.data() /* b */, v36.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07002040 threadpool /* threadpool */);
2041 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07002042 if (status != xnn_status_success) {
2043 std::cerr << "failed to setup operation #35" << std::endl;
2044 return ExecutionPlan();
2045 }
2046
Marat Dukhan270a2c42020-06-26 16:45:52 -07002047 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002048 op36,
2049 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002050 v36.data() /* input */, v37.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002051 threadpool /* threadpool */);
2052 if (status != xnn_status_success) {
2053 std::cerr << "failed to setup operation #36" << std::endl;
2054 return ExecutionPlan();
2055 }
2056
Marat Dukhan270a2c42020-06-26 16:45:52 -07002057 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002058 op37,
2059 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002060 v37.data() /* input */, v38.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002061 threadpool /* threadpool */);
2062 if (status != xnn_status_success) {
2063 std::cerr << "failed to setup operation #37" << std::endl;
2064 return ExecutionPlan();
2065 }
2066
Marat Dukhan270a2c42020-06-26 16:45:52 -07002067 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002068 op38,
2069 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002070 v38.data() /* input */, v39.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002071 threadpool /* threadpool */);
2072 if (status != xnn_status_success) {
2073 std::cerr << "failed to setup operation #38" << std::endl;
2074 return ExecutionPlan();
2075 }
2076
Marat Dukhan270a2c42020-06-26 16:45:52 -07002077 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002078 op39,
2079 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002080 v39.data() /* input */, v40.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002081 threadpool /* threadpool */);
2082 if (status != xnn_status_success) {
2083 std::cerr << "failed to setup operation #39" << std::endl;
2084 return ExecutionPlan();
2085 }
2086
Marat Dukhan270a2c42020-06-26 16:45:52 -07002087 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002088 op40,
2089 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002090 v40.data() /* input */, v41.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002091 threadpool /* threadpool */);
2092 if (status != xnn_status_success) {
2093 std::cerr << "failed to setup operation #40" << std::endl;
2094 return ExecutionPlan();
2095 }
2096
Marat Dukhan270a2c42020-06-26 16:45:52 -07002097 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002098 op41,
2099 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002100 v41.data() /* input */, v42.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002101 threadpool /* threadpool */);
2102 if (status != xnn_status_success) {
2103 std::cerr << "failed to setup operation #41" << std::endl;
2104 return ExecutionPlan();
2105 }
2106
Marat Dukhanb2164a32020-06-04 19:05:27 -07002107 {
2108 const size_t a_shape[] = { 1, 14, 14, 96 };
2109 const size_t b_shape[] = { 1, 14, 14, 96 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07002110 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07002111 op42,
2112 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002113 v42.data() /* a */, v39.data() /* b */, v43.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07002114 threadpool /* threadpool */);
2115 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07002116 if (status != xnn_status_success) {
2117 std::cerr << "failed to setup operation #42" << std::endl;
2118 return ExecutionPlan();
2119 }
2120
Marat Dukhan270a2c42020-06-26 16:45:52 -07002121 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002122 op43,
2123 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002124 v43.data() /* input */, v44.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002125 threadpool /* threadpool */);
2126 if (status != xnn_status_success) {
2127 std::cerr << "failed to setup operation #43" << std::endl;
2128 return ExecutionPlan();
2129 }
2130
Marat Dukhan270a2c42020-06-26 16:45:52 -07002131 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002132 op44,
2133 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002134 v44.data() /* input */, v45.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002135 threadpool /* threadpool */);
2136 if (status != xnn_status_success) {
2137 std::cerr << "failed to setup operation #44" << std::endl;
2138 return ExecutionPlan();
2139 }
2140
Marat Dukhan270a2c42020-06-26 16:45:52 -07002141 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002142 op45,
2143 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002144 v45.data() /* input */, v46.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002145 threadpool /* threadpool */);
2146 if (status != xnn_status_success) {
2147 std::cerr << "failed to setup operation #45" << std::endl;
2148 return ExecutionPlan();
2149 }
2150
Marat Dukhanb2164a32020-06-04 19:05:27 -07002151 {
2152 const size_t a_shape[] = { 1, 14, 14, 96 };
2153 const size_t b_shape[] = { 1, 14, 14, 96 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07002154 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07002155 op46,
2156 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002157 v46.data() /* a */, v43.data() /* b */, v47.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07002158 threadpool /* threadpool */);
2159 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07002160 if (status != xnn_status_success) {
2161 std::cerr << "failed to setup operation #46" << std::endl;
2162 return ExecutionPlan();
2163 }
2164
Marat Dukhan270a2c42020-06-26 16:45:52 -07002165 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002166 op47,
2167 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002168 v47.data() /* input */, v48.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002169 threadpool /* threadpool */);
2170 if (status != xnn_status_success) {
2171 std::cerr << "failed to setup operation #47" << std::endl;
2172 return ExecutionPlan();
2173 }
2174
Marat Dukhan270a2c42020-06-26 16:45:52 -07002175 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002176 op48,
2177 1 /* batch size */, 14 /* input height */, 14 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002178 v48.data() /* input */, v49.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002179 threadpool /* threadpool */);
2180 if (status != xnn_status_success) {
2181 std::cerr << "failed to setup operation #48" << std::endl;
2182 return ExecutionPlan();
2183 }
2184
Marat Dukhan270a2c42020-06-26 16:45:52 -07002185 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002186 op49,
2187 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002188 v49.data() /* input */, v50.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002189 threadpool /* threadpool */);
2190 if (status != xnn_status_success) {
2191 std::cerr << "failed to setup operation #49" << std::endl;
2192 return ExecutionPlan();
2193 }
2194
Marat Dukhan270a2c42020-06-26 16:45:52 -07002195 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002196 op50,
2197 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002198 v50.data() /* input */, v51.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002199 threadpool /* threadpool */);
2200 if (status != xnn_status_success) {
2201 std::cerr << "failed to setup operation #50" << std::endl;
2202 return ExecutionPlan();
2203 }
2204
Marat Dukhan270a2c42020-06-26 16:45:52 -07002205 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002206 op51,
2207 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002208 v51.data() /* input */, v52.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002209 threadpool /* threadpool */);
2210 if (status != xnn_status_success) {
2211 std::cerr << "failed to setup operation #51" << std::endl;
2212 return ExecutionPlan();
2213 }
2214
Marat Dukhan270a2c42020-06-26 16:45:52 -07002215 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002216 op52,
2217 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002218 v52.data() /* input */, v53.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002219 threadpool /* threadpool */);
2220 if (status != xnn_status_success) {
2221 std::cerr << "failed to setup operation #52" << std::endl;
2222 return ExecutionPlan();
2223 }
2224
Marat Dukhanb2164a32020-06-04 19:05:27 -07002225 {
2226 const size_t a_shape[] = { 1, 7, 7, 160 };
2227 const size_t b_shape[] = { 1, 7, 7, 160 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07002228 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07002229 op53,
2230 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002231 v53.data() /* a */, v50.data() /* b */, v54.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07002232 threadpool /* threadpool */);
2233 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07002234 if (status != xnn_status_success) {
2235 std::cerr << "failed to setup operation #53" << std::endl;
2236 return ExecutionPlan();
2237 }
2238
Marat Dukhan270a2c42020-06-26 16:45:52 -07002239 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002240 op54,
2241 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002242 v54.data() /* input */, v55.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002243 threadpool /* threadpool */);
2244 if (status != xnn_status_success) {
2245 std::cerr << "failed to setup operation #54" << std::endl;
2246 return ExecutionPlan();
2247 }
2248
Marat Dukhan270a2c42020-06-26 16:45:52 -07002249 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002250 op55,
2251 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002252 v55.data() /* input */, v56.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002253 threadpool /* threadpool */);
2254 if (status != xnn_status_success) {
2255 std::cerr << "failed to setup operation #55" << std::endl;
2256 return ExecutionPlan();
2257 }
2258
Marat Dukhan270a2c42020-06-26 16:45:52 -07002259 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002260 op56,
2261 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002262 v56.data() /* input */, v57.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002263 threadpool /* threadpool */);
2264 if (status != xnn_status_success) {
2265 std::cerr << "failed to setup operation #56" << std::endl;
2266 return ExecutionPlan();
2267 }
2268
Marat Dukhanb2164a32020-06-04 19:05:27 -07002269 {
2270 const size_t a_shape[] = { 1, 7, 7, 160 };
2271 const size_t b_shape[] = { 1, 7, 7, 160 };
Marat Dukhan270a2c42020-06-26 16:45:52 -07002272 status = xnn_setup_add_nd_f16(
Marat Dukhanb2164a32020-06-04 19:05:27 -07002273 op57,
2274 4, a_shape, 4, b_shape,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002275 v57.data() /* a */, v54.data() /* b */, v58.data() /* output */,
Marat Dukhanb2164a32020-06-04 19:05:27 -07002276 threadpool /* threadpool */);
2277 }
Marat Dukhanc068bb62019-10-04 13:24:39 -07002278 if (status != xnn_status_success) {
2279 std::cerr << "failed to setup operation #57" << std::endl;
2280 return ExecutionPlan();
2281 }
2282
Marat Dukhan270a2c42020-06-26 16:45:52 -07002283 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002284 op58,
2285 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002286 v58.data() /* input */, v59.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002287 threadpool /* threadpool */);
2288 if (status != xnn_status_success) {
2289 std::cerr << "failed to setup operation #58" << std::endl;
2290 return ExecutionPlan();
2291 }
2292
Marat Dukhan270a2c42020-06-26 16:45:52 -07002293 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002294 op59,
2295 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002296 v59.data() /* input */, v60.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002297 threadpool /* threadpool */);
2298 if (status != xnn_status_success) {
2299 std::cerr << "failed to setup operation #59" << std::endl;
2300 return ExecutionPlan();
2301 }
2302
Marat Dukhan270a2c42020-06-26 16:45:52 -07002303 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002304 op60,
2305 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002306 v60.data() /* input */, v61.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002307 threadpool /* threadpool */);
2308 if (status != xnn_status_success) {
2309 std::cerr << "failed to setup operation #60" << std::endl;
2310 return ExecutionPlan();
2311 }
2312
Marat Dukhan270a2c42020-06-26 16:45:52 -07002313 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002314 op61,
2315 1 /* batch size */, 7 /* input height */, 7 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002316 v61.data() /* input */, v62.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002317 threadpool /* threadpool */);
2318 if (status != xnn_status_success) {
2319 std::cerr << "failed to setup operation #61" << std::endl;
2320 return ExecutionPlan();
2321 }
2322
Marat Dukhan270a2c42020-06-26 16:45:52 -07002323 status = xnn_setup_global_average_pooling_nwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002324 op62,
2325 1 /* batch size */, 49 /* width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002326 v62.data() /* input */, v63.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002327 threadpool /* threadpool */);
2328 if (status != xnn_status_success) {
2329 std::cerr << "failed to setup operation #62" << std::endl;
2330 return ExecutionPlan();
2331 }
2332
Marat Dukhan270a2c42020-06-26 16:45:52 -07002333 status = xnn_setup_convolution2d_nhwc_f16(
Marat Dukhanc068bb62019-10-04 13:24:39 -07002334 op63,
2335 1 /* batch size */, 1 /* input height */, 1 /* input width */,
Marat Dukhan52e061d2021-03-09 00:02:44 -08002336 v63.data() /* input */, v64.data() /* output */,
Marat Dukhanc068bb62019-10-04 13:24:39 -07002337 threadpool /* threadpool */);
2338 if (status != xnn_status_success) {
2339 std::cerr << "failed to setup operation #63" << std::endl;
2340 return ExecutionPlan();
2341 }
2342
2343 #pragma clang diagnostic push
2344 #pragma clang diagnostic ignored "-Wpessimizing-move"
2345 return operators;
2346 #pragma clang diagnostic pop
2347}
2348
2349} // namespace models