1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5
6 #include <math.h>
7 #include <stdlib.h>
8
9 #include <xnnpack.h>
10
11
12 // A dummy program that calls every Operators API function in XNNPACK, for size estimation.
main(int argc,char ** argv)13 int main(int argc, char** argv) {
14 int function_idx = 0;
15 if (argc >= 2) {
16 function_idx = atoi(argv[1]);
17 }
18
19 xnn_initialize(NULL /* allocator */);
20
21 xnn_operator_t op = NULL;
22 switch (function_idx) {
23 case -1:
24 xnn_delete_operator(op);
25 break;
26 case 0:
27 xnn_run_operator(op, NULL);
28 break;
29 case 1:
30 xnn_create_add_nd_f32(
31 0.0f, 0.0f,
32 0, &op);
33 break;
34 case 2:
35 xnn_setup_add_nd_f32(
36 op, 0, NULL, 0, NULL,
37 NULL, NULL, NULL, NULL);
38 break;
39 case 3:
40 xnn_create_argmax_pooling2d_nhwc_f32(
41 0, 0, 0, 0,
42 0, 0,
43 0, 0, 0,
44 0, &op);
45 break;
46 case 4:
47 xnn_setup_argmax_pooling2d_nhwc_f32(
48 op, 0, 0, 0,
49 NULL, NULL, NULL, NULL);
50 break;
51 case 5:
52 xnn_create_average_pooling2d_nhwc_f32(
53 0, 0, 0, 0,
54 0, 0,
55 0, 0,
56 0, 0, 0,
57 0.0f, 0.0f,
58 0, &op);
59 break;
60 case 6:
61 xnn_setup_average_pooling2d_nhwc_f32(
62 op, 0, 0, 0,
63 NULL, NULL, NULL);
64 break;
65 case 7:
66 xnn_create_clamp_nc_f32(
67 0, 0, 0,
68 0.0f, 0.0f,
69 0, &op);
70 break;
71 case 8:
72 xnn_setup_clamp_nc_f32(
73 op, 0,
74 NULL, NULL, NULL);
75 break;
76 case 9:
77 xnn_create_convolution2d_nhwc_f32(
78 0, 0, 0, 0,
79 0, 0,
80 0, 0,
81 0, 0,
82 0, 0, 0, 0, 0,
83 NULL, NULL,
84 0.0f, 0.0f,
85 0, NULL, &op);
86 break;
87 case 10:
88 xnn_setup_convolution2d_nhwc_f32(
89 op, 0, 0, 0,
90 NULL, NULL, NULL);
91 break;
92 case 11:
93 xnn_create_deconvolution2d_nhwc_f32(
94 0, 0, 0, 0,
95 0, 0,
96 0, 0,
97 0, 0,
98 0, 0, 0, 0, 0,
99 NULL, NULL,
100 0.0f, 0.0f,
101 0, NULL, &op);
102 break;
103 case 12:
104 xnn_setup_deconvolution2d_nhwc_f32(
105 op, 0, 0, 0, 0, 0,
106 NULL, NULL, NULL);
107 break;
108 case 13:
109 xnn_create_divide_nd_f32(
110 0.0f, 0.0f, 0, &op);
111 break;
112 case 14:
113 xnn_setup_divide_nd_f32(
114 op, 0, NULL, 0, NULL,
115 NULL, NULL, NULL, NULL);
116 break;
117 case 15:
118 xnn_create_fully_connected_nc_f32(
119 0, 0, 0, 0,
120 NULL, NULL,
121 0.0f, 0.0f,
122 0, NULL, &op);
123 break;
124 case 16:
125 xnn_setup_fully_connected_nc_f32(
126 op, 0,
127 NULL, NULL, NULL);
128 break;
129 case 17:
130 xnn_create_global_average_pooling_nwc_f32(
131 0, 0, 0,
132 0.0f, 0.0f,
133 0, &op);
134 break;
135 case 18:
136 xnn_setup_global_average_pooling_nwc_f32(
137 op, 0, 0,
138 NULL, NULL, NULL);
139 break;
140 case 19:
141 xnn_create_hardswish_nc_f32(
142 0, 0, 0,
143 0, &op);
144 break;
145 case 20:
146 xnn_setup_hardswish_nc_f32(
147 op, 0,
148 NULL, NULL, NULL);
149 break;
150 case 21:
151 xnn_create_max_pooling2d_nhwc_f32(
152 0, 0, 0, 0,
153 0, 0,
154 0, 0,
155 0, 0,
156 0, 0, 0,
157 0.0f, 0.0f,
158 0, &op);
159 break;
160 case 22:
161 xnn_setup_max_pooling2d_nhwc_f32(
162 op, 0, 0, 0,
163 NULL, NULL, NULL);
164 break;
165 case 23:
166 xnn_create_maximum_nd_f32(
167 0, &op);
168 break;
169 case 24:
170 xnn_setup_maximum_nd_f32(
171 op, 0, NULL, 0, NULL,
172 NULL, NULL, NULL, NULL);
173 break;
174 case 25:
175 xnn_create_minimum_nd_f32(
176 0, &op);
177 break;
178 case 26:
179 xnn_setup_minimum_nd_f32(
180 op, 0, NULL, 0, NULL,
181 NULL, NULL, NULL, NULL);
182 break;
183 case 27:
184 xnn_create_multiply_nd_f32(
185 0.0f, 0.0f,
186 0, &op);
187 break;
188 case 28:
189 xnn_setup_multiply_nd_f32(
190 op, 0, NULL, 0, NULL,
191 NULL, NULL, NULL, NULL);
192 break;
193 case 29:
194 xnn_create_prelu_nc_f32(
195 0, 0, 0,
196 NULL, 0, NULL, &op);
197 break;
198 case 30:
199 xnn_setup_prelu_nc_f32(
200 op, 0,
201 NULL, NULL, NULL);
202 break;
203 case 31:
204 xnn_create_resize_bilinear2d_nhwc_f32(
205 0, 0, 0,
206 0, &op);
207 break;
208 case 32:
209 xnn_setup_resize_bilinear2d_nhwc_f32(
210 op, 0, 0, 0, 0, 0,
211 NULL, NULL, NULL);
212 break;
213 case 33:
214 xnn_create_sigmoid_nc_f32(
215 0, 0, 0,
216 0, &op);
217 break;
218 case 34:
219 xnn_setup_sigmoid_nc_f32(
220 op, 0,
221 NULL, NULL, NULL);
222 break;
223 case 35:
224 xnn_create_softmax_nc_f32(
225 0, 0, 0,
226 0, &op);
227 break;
228 case 36:
229 xnn_setup_softmax_nc_f32(
230 op, 0,
231 NULL, NULL, NULL);
232 break;
233 case 37:
234 xnn_create_subtract_nd_f32(
235 0.0f, 0.0f,
236 0, &op);
237 break;
238 case 38:
239 xnn_setup_subtract_nd_f32(
240 op, 0, NULL, 0, NULL,
241 NULL, NULL, NULL, NULL);
242 break;
243 case 39:
244 xnn_create_channel_shuffle_nc_x32(
245 0, 0, 0, 0,
246 0, &op);
247 break;
248 case 40:
249 xnn_setup_channel_shuffle_nc_x32(
250 op, 0,
251 NULL, NULL, NULL);
252 break;
253 case 41:
254 xnn_create_unpooling2d_nhwc_x32(
255 0, 0, 0, 0,
256 0, 0,
257 0, 0, 0,
258 0, &op);
259 break;
260 case 42:
261 xnn_setup_unpooling2d_nhwc_x32(
262 op, 0, 0, 0,
263 NULL, NULL, NULL, NULL);
264 break;
265 }
266
267 xnn_deinitialize();
268 }
269