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 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_convolution2d_nhwc_f32(
31 0, 0, 0, 0,
32 0, 0,
33 0, 0,
34 0, 0,
35 0, 0, 0,
36 0, 0,
37 NULL, NULL,
38 -INFINITY, INFINITY,
39 0,
40 &op);
41 break;
42 case 2:
43 xnn_setup_convolution2d_nhwc_f32(
44 op,
45 0, 0, 0,
46 NULL, NULL,
47 NULL);
48 break;
49 case 3:
50 xnn_create_deconvolution2d_nhwc_f32(
51 0, 0, 0, 0,
52 0, 0,
53 0, 0,
54 0, 0,
55 0, 0, 0,
56 0, 0,
57 NULL, NULL,
58 -INFINITY, INFINITY,
59 0,
60 &op);
61 break;
62 case 4:
63 xnn_setup_deconvolution2d_nhwc_f32(
64 op,
65 0, 0, 0,
66 0, 0,
67 NULL, NULL,
68 NULL);
69 break;
70 case 5:
71 xnn_create_fully_connected_nc_f32(
72 0, 0, 0, 0, NULL, NULL,
73 -INFINITY, INFINITY, 0, &op);
74 break;
75 case 6:
76 xnn_setup_fully_connected_nc_f32(
77 op, 0, NULL, NULL, NULL);
78 break;
79 case 7:
80 xnn_create_global_average_pooling_nwc_f32(
81 0, 0, 0,
82 -INFINITY, INFINITY, 0, &op);
83 break;
84 case 8:
85 xnn_setup_global_average_pooling_nwc_f32(
86 op, 0, 0, NULL, NULL, NULL);
87 break;
88 case 9:
89 xnn_create_average_pooling2d_nhwc_f32(
90 0, 0, 0, 0,
91 0, 0,
92 0, 0,
93 0, 0, 0,
94 -INFINITY, INFINITY,
95 0, &op);
96 break;
97 case 10:
98 xnn_setup_average_pooling2d_nhwc_f32(
99 op, 0, 0, 0, NULL, NULL, NULL);
100 break;
101 case 11:
102 xnn_create_max_pooling2d_nhwc_f32(
103 0, 0, 0, 0,
104 0, 0,
105 0, 0,
106 0, 0,
107 0, 0, 0,
108 -INFINITY, INFINITY,
109 0, &op);
110 break;
111 case 12:
112 xnn_setup_max_pooling2d_nhwc_f32(
113 op, 0, 0, 0, NULL, NULL, NULL);
114 break;
115 case 13:
116 xnn_create_argmax_pooling2d_nhwc_f32(
117 0, 0, 0, 0,
118 0, 0,
119 0, 0, 0,
120 -INFINITY, INFINITY,
121 0, &op);
122 break;
123 case 14:
124 xnn_setup_argmax_pooling2d_nhwc_f32(
125 op, 0, 0, 0, NULL, NULL, NULL, NULL);
126 break;
127 case 15:
128 xnn_create_unpooling2d_nhwc_x32(
129 0, 0, 0, 0,
130 0, 0,
131 0, 0, 0,
132 0, &op);
133 break;
134 case 17:
135 xnn_setup_unpooling2d_nhwc_x32(
136 op, 0, 0, 0, NULL, NULL, NULL, NULL);
137 break;
138 case 18:
139 xnn_create_channel_shuffle_nc_x32(
140 0, 0, 0, 0,
141 0, &op);
142 break;
143 case 19:
144 xnn_setup_channel_shuffle_nc_x32(
145 op, 0, NULL, NULL, NULL);
146 break;
147 case 20:
148 xnn_create_add_nc_f32(
149 0, 0, 0, 0,
150 -INFINITY, INFINITY,
151 0, &op);
152 break;
153 case 21:
154 xnn_setup_add_nc_f32(
155 op, 0, NULL, NULL, NULL, NULL);
156 break;
157 case 22:
158 xnn_create_channel_pad_nc_x32(
159 0, 0, 0, 0, 0, NULL, 0, &op);
160 break;
161 case 23:
162 xnn_setup_channel_pad_nc_x32(
163 op, 0, NULL, NULL, NULL);
164 break;
165 case 24:
166 xnn_create_clamp_nc_f32(
167 0, 0, 0,
168 -INFINITY, INFINITY,
169 0, &op);
170 break;
171 case 25:
172 xnn_setup_clamp_nc_f32(
173 op, 0, NULL, NULL, NULL);
174 break;
175 case 26:
176 xnn_create_hardswish_nc_f32(
177 0, 0, 0, 0, &op);
178 break;
179 case 27:
180 xnn_setup_hardswish_nc_f32(
181 op, 0, NULL, NULL, NULL);
182 break;
183 case 28:
184 xnn_create_prelu_nc_f32(
185 0, 0, 0, NULL, 0, 0, 0, &op);
186 break;
187 case 29:
188 xnn_setup_prelu_nc_f32(
189 op, 0, NULL, NULL, NULL);
190 break;
191 }
192
193 xnn_deinitialize();
194 }
195