• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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