xref: /aosp_15_r20/external/XNNPACK/test/operator-size.c (revision 4bdc94577ba0e567308109d787f7fec7b531ce36)
1 // Copyright 2019 Google LLC
2 //
3 // This source code is licensed under the BSD-style license found in the
4 // LICENSE file in the root directory of this source tree.
5 
6 #include <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