blob: 643c66ee9d811c3c91827a965deb90701b13920a [file] [log] [blame]
Marat Dukhan08c4a432019-10-03 09:29:21 -07001# 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# Description:
7# XNNPACK - optimized floating-point neural network operators library
8
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08009load(":build_defs.bzl", "xnnpack_aggregate_library", "xnnpack_benchmark", "xnnpack_binary", "xnnpack_cc_library", "xnnpack_min_size_copts", "xnnpack_optional_armcl_copts", "xnnpack_optional_armcl_deps", "xnnpack_optional_gemmlowp_copts", "xnnpack_optional_gemmlowp_deps", "xnnpack_optional_ruy_copts", "xnnpack_optional_ruy_deps", "xnnpack_optional_tflite_copts", "xnnpack_optional_tflite_deps", "xnnpack_std_copts", "xnnpack_unit_test", "xnnpack_visibility")
10
Marat Dukhan08c4a432019-10-03 09:29:21 -070011licenses(["notice"])
12
13exports_files(["LICENSE"])
14
Marat Dukhan08c4a432019-10-03 09:29:21 -070015OPERATOR_BENCHMARK_DEPS = [
16 ":XNNPACK",
17 ":bench_utils",
18 "@cpuinfo",
19 "@pthreadpool",
20]
21
22MICROKERNEL_BENCHMARK_DEPS = [
23 ":ukernels",
24 ":bench_utils",
Frank Barchard7e955972019-10-11 10:34:25 -070025 ":enable_assembly",
Marat Dukhan08c4a432019-10-03 09:29:21 -070026 "@cpuinfo",
27 "@FP16",
28 "@pthreadpool",
29]
30
Marat Dukhan6adff4e2019-10-14 18:32:07 -070031ACCURACY_EVAL_DEPS = [
32 ":XNNPACK",
33 ":ukernels",
34 "@FP16",
35 "@pthreadpool",
36]
37
Marat Dukhan08c4a432019-10-03 09:29:21 -070038MICROKERNEL_TEST_DEPS = [
39 ":ukernels",
Frank Barchard7e955972019-10-11 10:34:25 -070040 ":enable_assembly",
Marat Dukhan08c4a432019-10-03 09:29:21 -070041 "@cpuinfo",
42 "@FP16",
43 "@pthreadpool",
44]
45
46OPERATOR_TEST_DEPS = [
47 ":XNNPACK",
48 "@pthreadpool",
49 "@FP16",
50]
51
52OPERATOR_SRCS = [
Marat Dukhanefc47b82019-11-18 09:25:38 -080053 "src/add-nc.c",
54 "src/argmax-pooling-nhwc.c",
55 "src/average-pooling-nhwc.c",
56 "src/channel-pad-nc.c",
57 "src/channel-shuffle-nc.c",
58 "src/clamp-nc.c",
59 "src/convolution-nchw.c",
60 "src/convolution-nhwc.c",
61 "src/deconvolution-nhwc.c",
62 "src/fully-connected-nc.c",
63 "src/global-average-pooling-ncw.c",
64 "src/global-average-pooling-nwc.c",
65 "src/hardswish-nc.c",
66 "src/leaky-relu-nc.c",
67 "src/max-pooling-nhwc.c",
68 "src/multiply-nd.c",
69 "src/prelu-nc.c",
70 "src/resize-bilinear-nhwc.c",
71 "src/sigmoid-nc.c",
72 "src/softargmax-nc.c",
73 "src/unpooling-nhwc.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -070074]
75
76SCALAR_UKERNELS = [
77 "src/f32-argmaxpool/mp9p8q-scalar.c",
78 "src/f32-argmaxpool/up4-scalar.c",
79 "src/f32-argmaxpool/up9-scalar.c",
80 "src/f32-avgpool/mp9p8q-scalar.c",
81 "src/f32-avgpool/up9-scalar.c",
Marat Dukhan35dacfb2019-11-07 19:18:16 -080082 "src/f32-bilinear/scalar-c1.c",
83 "src/f32-bilinear/scalar-c2.c",
84 "src/f32-bilinear/scalar-c4.c",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -080085 "src/f32-binop/vadd-scalar-x1.c",
86 "src/f32-binop/vadd-scalar-x2.c",
87 "src/f32-binop/vadd-scalar-x4.c",
88 "src/f32-binop/vaddc-scalar-x1.c",
89 "src/f32-binop/vaddc-scalar-x2.c",
90 "src/f32-binop/vaddc-scalar-x4.c",
91 "src/f32-binop/vmul-scalar-x1.c",
92 "src/f32-binop/vmul-scalar-x2.c",
93 "src/f32-binop/vmul-scalar-x4.c",
94 "src/f32-binop/vmulc-scalar-x1.c",
95 "src/f32-binop/vmulc-scalar-x2.c",
96 "src/f32-binop/vmulc-scalar-x4.c",
97 "src/f32-binop/vsub-scalar-x1.c",
98 "src/f32-binop/vsub-scalar-x2.c",
99 "src/f32-binop/vsub-scalar-x4.c",
100 "src/f32-binop/vsubc-scalar-x1.c",
101 "src/f32-binop/vsubc-scalar-x2.c",
102 "src/f32-binop/vsubc-scalar-x4.c",
103 "src/f32-binop/vrsubc-scalar-x1.c",
104 "src/f32-binop/vrsubc-scalar-x2.c",
105 "src/f32-binop/vrsubc-scalar-x4.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700106 "src/f32-clamp/scalar.c",
Erich Elsen563df5f2019-10-23 08:02:21 -0700107 "src/f32-conv-hwc2spchw/3x3s2p1c3x4-scalar-1x1.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700108 "src/f32-igemm/1x4-scalar.c",
109 "src/f32-igemm/2x4-scalar.c",
110 "src/f32-igemm/4x2-scalar.c",
111 "src/f32-igemm/4x4-scalar.c",
112 "src/f32-dwconv/up1x25-scalar.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800113 "src/f32-dwconv/up1x25-scalar-acc2.c",
114 "src/f32-dwconv/up2x25-scalar.c",
115 "src/f32-dwconv/up2x25-scalar-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700116 "src/f32-dwconv/up1x4-scalar.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800117 "src/f32-dwconv/up1x4-scalar-acc2.c",
118 "src/f32-dwconv/up2x4-scalar.c",
119 "src/f32-dwconv/up2x4-scalar-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700120 "src/f32-dwconv/up1x9-scalar.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800121 "src/f32-dwconv/up1x9-scalar-acc2.c",
122 "src/f32-dwconv/up2x9-scalar.c",
123 "src/f32-dwconv/up2x9-scalar-acc2.c",
Erich Elsen0cc2c532019-10-15 04:44:18 -0700124 "src/f32-dwconv-spchw/3x3p1-scalar.c",
Erich Elsen38709a62019-11-08 11:58:45 -0800125 "src/f32-dwconv-spchw/5x5p2-scalar.c",
Erich Elsenac4de802019-10-16 04:35:30 -0700126 "src/f32-dwconv-spchw/3x3s2p1-scalar.c",
Erich Elsen38709a62019-11-08 11:58:45 -0800127 "src/f32-dwconv-spchw/5x5s2p2-scalar.c",
Erich Elsen34dc2c02019-10-16 05:11:41 -0700128 "src/f32-gavgpool-spchw/scalar-x1.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700129 "src/f32-gavgpool/mp7p7q-scalar.c",
130 "src/f32-gavgpool/up7-scalar.c",
131 "src/f32-gemm/1x4-scalar.c",
132 "src/f32-gemm/2x4-scalar.c",
133 "src/f32-gemm/4x2-scalar.c",
134 "src/f32-gemm/4x4-scalar.c",
135 "src/f32-gemminc/1x4-scalar.c",
136 "src/f32-gemminc/2x4-scalar.c",
137 "src/f32-gemminc/4x4-scalar.c",
138 "src/f32-hswish/scalar.c",
139 "src/f32-maxpool/9p8q-scalar.c",
140 "src/f32-pavgpool/mp9p8q-scalar.c",
141 "src/f32-pavgpool/up9-scalar.c",
142 "src/f32-ppmm/2x4-scalar.c",
143 "src/f32-ppmm/3x3-scalar.c",
144 "src/f32-ppmm/4x2-scalar.c",
145 "src/f32-ppmm/4x4-scalar.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800146 "src/f32-prelu/scalar-2x1.c",
147 "src/f32-prelu/scalar-2x4.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700148 "src/f32-rmax/scalar.c",
149 "src/f32-spmm/1x1-scalar-pipelined.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700150 "src/f32-spmm/1x1-scalar.c",
151 "src/f32-spmm/2x1-scalar-pipelined.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700152 "src/f32-spmm/2x1-scalar.c",
153 "src/f32-spmm/4x1-scalar-pipelined.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700154 "src/f32-spmm/4x1-scalar.c",
155 "src/f32-spmm/8x1-scalar-pipelined.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700156 "src/f32-spmm/8x1-scalar.c",
Erich Elsenc6afd9b2019-10-24 16:10:53 -0700157 "src/f32-spmm/8x2-scalar.c",
158 "src/f32-spmm/8x4-scalar.c",
Marat Dukhan49e6ee92019-11-06 15:55:29 -0800159 "src/f32-vmulcaddc/c1-scalar-2x.c",
160 "src/f32-vmulcaddc/c2-scalar-2x.c",
161 "src/f32-vmulcaddc/c4-scalar-2x.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700162 "src/q8-avgpool/mp9p8q-scalar.c",
163 "src/q8-avgpool/up9-scalar.c",
164 "src/q8-igemm/2x2-scalar.c",
165 "src/q8-dwconv/up1x9-scalar.c",
166 "src/q8-gavgpool/mp7p7q-scalar.c",
167 "src/q8-gavgpool/up7-scalar.c",
168 "src/q8-gemm/2x2-scalar.c",
169 "src/q8-vadd/scalar.c",
170 "src/u8-clamp/scalar.c",
171 "src/u8-lut32norm/scalar.c",
172 "src/u8-maxpool/9p8q-scalar.c",
173 "src/u8-rmax/scalar.c",
174 "src/x32-packx/x2-scalar.c",
175 "src/x32-packx/x3-scalar.c",
176 "src/x32-packx/x4-scalar.c",
177 "src/x32-pad/x2-scalar.c",
178 "src/x32-unpool/scalar.c",
179 "src/x32-zip/x2-scalar.c",
180 "src/x32-zip/x3-scalar.c",
181 "src/x32-zip/x4-scalar.c",
182 "src/x32-zip/xm-scalar.c",
183 "src/x8-lut/scalar.c",
184 "src/x8-zip/x2-scalar.c",
185 "src/x8-zip/x3-scalar.c",
186 "src/x8-zip/x4-scalar.c",
187 "src/x8-zip/xm-scalar.c",
188]
189
190PSIMD_UKERNELS = [
191 "src/f32-argmaxpool/mp9p8q-psimd.c",
192 "src/f32-argmaxpool/up4-psimd.c",
193 "src/f32-argmaxpool/up9-psimd.c",
194 "src/f32-avgpool/mp9p8q-psimd.c",
195 "src/f32-avgpool/up9-psimd.c",
Marat Dukhan35dacfb2019-11-07 19:18:16 -0800196 "src/f32-bilinear/psimd-c4.c",
197 "src/f32-bilinear/psimd-c8.c",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -0800198 "src/f32-binop/vadd-psimd-x4.c",
199 "src/f32-binop/vadd-psimd-x8.c",
200 "src/f32-binop/vaddc-psimd-x4.c",
201 "src/f32-binop/vaddc-psimd-x8.c",
202 "src/f32-binop/vmul-psimd-x4.c",
203 "src/f32-binop/vmul-psimd-x8.c",
204 "src/f32-binop/vmulc-psimd-x4.c",
205 "src/f32-binop/vmulc-psimd-x8.c",
206 "src/f32-binop/vrsubc-psimd-x4.c",
207 "src/f32-binop/vrsubc-psimd-x8.c",
208 "src/f32-binop/vsub-psimd-x4.c",
209 "src/f32-binop/vsub-psimd-x8.c",
210 "src/f32-binop/vsubc-psimd-x4.c",
211 "src/f32-binop/vsubc-psimd-x8.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700212 "src/f32-clamp/psimd.c",
213 "src/f32-igemm/1x8-psimd-loadsplat.c",
214 "src/f32-igemm/1x8-psimd-splat.c",
215 "src/f32-igemm/1x8s4-psimd.c",
216 "src/f32-igemm/4x2c4-psimd.c",
217 "src/f32-igemm/4x8-psimd-loadsplat.c",
218 "src/f32-igemm/4x8-psimd-splat.c",
219 "src/f32-igemm/4x8s4-psimd.c",
220 "src/f32-igemm/6x8-psimd-loadsplat.c",
221 "src/f32-igemm/6x8-psimd-splat.c",
222 "src/f32-igemm/6x8s4-psimd.c",
223 "src/f32-dwconv/up4x25-psimd.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800224 "src/f32-dwconv/up4x25-psimd-acc2.c",
225 "src/f32-dwconv/up8x25-psimd.c",
226 "src/f32-dwconv/up8x25-psimd-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700227 "src/f32-dwconv/up4x4-psimd.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800228 "src/f32-dwconv/up4x4-psimd-acc2.c",
229 "src/f32-dwconv/up8x4-psimd.c",
230 "src/f32-dwconv/up8x4-psimd-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700231 "src/f32-dwconv/up4x9-psimd.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800232 "src/f32-dwconv/up4x9-psimd-acc2.c",
233 "src/f32-dwconv/up8x9-psimd.c",
234 "src/f32-dwconv/up8x9-psimd-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700235 "src/f32-gavgpool/mp7p7q-psimd.c",
236 "src/f32-gavgpool/up7-psimd.c",
237 "src/f32-gemm/1x8-psimd-loadsplat.c",
238 "src/f32-gemm/1x8-psimd-splat.c",
239 "src/f32-gemm/1x8s4-psimd.c",
240 "src/f32-gemm/4x8-psimd-loadsplat.c",
241 "src/f32-gemm/4x8-psimd-splat.c",
242 "src/f32-gemm/4x8s4-psimd.c",
243 "src/f32-gemm/6x8-psimd-loadsplat.c",
244 "src/f32-gemm/6x8-psimd-splat.c",
245 "src/f32-gemm/6x8s4-psimd.c",
246 "src/f32-gemminc/1x8-psimd-loadsplat.c",
247 "src/f32-gemminc/1x8-psimd-splat.c",
248 "src/f32-gemminc/1x8s4-psimd.c",
249 "src/f32-gemminc/4x8-psimd-loadsplat.c",
250 "src/f32-gemminc/4x8-psimd-splat.c",
251 "src/f32-gemminc/4x8s4-psimd.c",
252 "src/f32-gemminc/6x8-psimd-loadsplat.c",
253 "src/f32-gemminc/6x8-psimd-splat.c",
254 "src/f32-gemminc/6x8s4-psimd.c",
255 "src/f32-hswish/psimd.c",
256 "src/f32-maxpool/9p8q-psimd.c",
257 "src/f32-pavgpool/mp9p8q-psimd.c",
258 "src/f32-pavgpool/up9-psimd.c",
259 "src/f32-ppmm/4x8-psimd.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800260 "src/f32-prelu/psimd-2x4.c",
261 "src/f32-prelu/psimd-2x8.c",
Marat Dukhan49e6ee92019-11-06 15:55:29 -0800262 "src/f32-vmulcaddc/c4-psimd-2x.c",
263 "src/f32-vmulcaddc/c8-psimd-2x.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700264 "src/x32-packx/x4-psimd.c",
265 "src/x32-pad/x2-psimd.c",
266 "src/x32-unpool/psimd.c",
267 "src/x32-zip/x2-psimd.c",
268 "src/x32-zip/x3-psimd.c",
269 "src/x32-zip/x4-psimd.c",
270 "src/x32-zip/xm-psimd.c",
271]
272
273# ISA-specific micro-kernels
274NEON_UKERNELS = [
275 "src/f32-avgpool/mp9p8q-neon.c",
276 "src/f32-avgpool/up9-neon.c",
Marat Dukhan35dacfb2019-11-07 19:18:16 -0800277 "src/f32-bilinear/neon-c4.c",
278 "src/f32-bilinear/neon-c8.c",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -0800279 "src/f32-binop/vadd-neon-x4.c",
280 "src/f32-binop/vadd-neon-x8.c",
281 "src/f32-binop/vaddc-neon-x4.c",
282 "src/f32-binop/vaddc-neon-x8.c",
283 "src/f32-binop/vmul-neon-x4.c",
284 "src/f32-binop/vmul-neon-x8.c",
285 "src/f32-binop/vmulc-neon-x4.c",
286 "src/f32-binop/vmulc-neon-x8.c",
287 "src/f32-binop/vrsubc-neon-x4.c",
288 "src/f32-binop/vrsubc-neon-x8.c",
289 "src/f32-binop/vsub-neon-x4.c",
290 "src/f32-binop/vsub-neon-x8.c",
291 "src/f32-binop/vsubc-neon-x4.c",
292 "src/f32-binop/vsubc-neon-x8.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700293 "src/f32-clamp/neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700294 "src/f32-dwconv/up4x9-neon.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800295 "src/f32-dwconv/up4x9-neon-acc2.c",
296 "src/f32-dwconv/up8x9-neon.c",
297 "src/f32-dwconv/up8x9-neon-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700298 "src/f32-gavgpool-spchw/neon-x4.c",
299 "src/f32-gavgpool/mp7p7q-neon.c",
300 "src/f32-gavgpool/up7-neon.c",
301 "src/f32-gemm/1x8-neon-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700302 "src/f32-gemm/4x2-neon-ld64.c",
303 "src/f32-gemm/4x8-neon-ld128.c",
304 "src/f32-gemm/4x8-neon-ld64.c",
305 "src/f32-gemm/5x8-neon-ld64.c",
306 "src/f32-gemm/6x8-neon-ld64.c",
307 "src/f32-gemminc/1x8-neon-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700308 "src/f32-gemminc/4x8-neon-ld128.c",
309 "src/f32-gemminc/4x8-neon-ld64.c",
310 "src/f32-gemminc/5x8-neon-ld64.c",
311 "src/f32-gemminc/6x8-neon-ld64.c",
312 "src/f32-hswish/neon.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800313 "src/f32-igemm/1x8-neon-ld64.c",
314 "src/f32-igemm/4x2-neon-ld64.c",
315 "src/f32-igemm/4x4-neon-ld64.c",
316 "src/f32-igemm/4x8-neon-ld128.c",
317 "src/f32-igemm/4x8-neon-ld64.c",
318 "src/f32-igemm/6x8-neon-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700319 "src/f32-pavgpool/mp9p8q-neon.c",
320 "src/f32-pavgpool/up9-neon.c",
321 "src/f32-ppmm/4x8-neon.c",
322 "src/f32-ppmm/8x8-neon.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800323 "src/f32-prelu/neon-2x4.c",
324 "src/f32-prelu/neon-2x8.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700325 "src/f32-rmax/neon.c",
Marat Dukhan14bec502019-11-18 11:35:31 -0800326 "src/f32-sigmoid/neon-frac-p9-p10-nr1recps-x16.c",
Marat Dukhan49e6ee92019-11-06 15:55:29 -0800327 "src/f32-vmulcaddc/c4-neon-2x.c",
328 "src/f32-vmulcaddc/c8-neon-2x.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700329 "src/q8-avgpool/mp9p8q-neon.c",
330 "src/q8-avgpool/up9-neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700331 "src/q8-dwconv/up8x9-neon.c",
332 "src/q8-gavgpool/mp7p7q-neon.c",
333 "src/q8-gavgpool/up7-neon.c",
334 "src/q8-gemm/4x8-neon.c",
335 "src/q8-gemm/8x8-neon.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800336 "src/q8-igemm/4x8-neon.c",
337 "src/q8-igemm/8x8-neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700338 "src/q8-vadd/neon.c",
339 "src/u8-clamp/neon.c",
340 "src/u8-maxpool/9p8q-neon.c",
341 "src/u8-rmax/neon.c",
342 "src/x32-packx/x4-neon-st4.c",
343 "src/x32-pad/x2-neon.c",
344 "src/x32-zip/x2-neon.c",
345 "src/x32-zip/x3-neon.c",
346 "src/x32-zip/x4-neon.c",
347 "src/x32-zip/xm-neon.c",
348 "src/x8-zip/x2-neon.c",
349 "src/x8-zip/x3-neon.c",
350 "src/x8-zip/x4-neon.c",
351 "src/x8-zip/xm-neon.c",
352]
353
354NEONFMA_UKERNELS = [
Marat Dukhan35dacfb2019-11-07 19:18:16 -0800355 "src/f32-bilinear/neonfma-c4.c",
356 "src/f32-bilinear/neonfma-c8.c",
Frank Barcharddb45b6a2019-10-09 16:42:45 -0700357 "src/f32-igemm/1x8-neonfma-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700358 "src/f32-igemm/4x2-neonfma-ld64.c",
359 "src/f32-igemm/4x4-neonfma-ld64.c",
360 "src/f32-igemm/4x8-neonfma-ld128.c",
361 "src/f32-igemm/4x8-neonfma-ld64.c",
362 "src/f32-igemm/6x8-neonfma-ld64.c",
363 "src/f32-dwconv/up4x9-neonfma.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800364 "src/f32-dwconv/up4x9-neonfma-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700365 "src/f32-dwconv/up8x9-neonfma.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800366 "src/f32-dwconv/up8x9-neonfma-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700367 "src/f32-gemm/1x8-neonfma-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700368 "src/f32-gemm/4x2-neonfma-ld64.c",
369 "src/f32-gemm/4x8-neonfma-ld128.c",
370 "src/f32-gemm/4x8-neonfma-ld64.c",
371 "src/f32-gemm/5x8-neonfma-ld64.c",
372 "src/f32-gemm/6x8-neonfma-ld64.c",
373 "src/f32-gemminc/1x8-neonfma-ld64.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700374 "src/f32-gemminc/4x8-neonfma-ld128.c",
375 "src/f32-gemminc/4x8-neonfma-ld64.c",
376 "src/f32-gemminc/5x8-neonfma-ld64.c",
377 "src/f32-gemminc/6x8-neonfma-ld64.c",
378 "src/f32-hswish/neonfma.c",
379 "src/f32-ppmm/4x8-neonfma.c",
380 "src/f32-ppmm/8x8-neonfma.c",
Marat Dukhan14bec502019-11-18 11:35:31 -0800381 "src/f32-sigmoid/neonfma-p5-nr2fma-x16.c",
Marat Dukhan49e6ee92019-11-06 15:55:29 -0800382 "src/f32-vmulcaddc/c4-neonfma-2x.c",
383 "src/f32-vmulcaddc/c8-neonfma-2x.c",
Marat Dukhan797a8fe2019-11-14 20:21:57 -0800384 "src/math/exp-neonfma-lut64-p2.c",
385 "src/math/exp-neonfma-p5.c",
Marat Dukhan346a9e52019-11-15 09:06:30 -0800386 "src/math/expminus-neonfma-p5.c",
Marat Dukhan80bafd22019-11-18 10:16:01 -0800387 "src/math/sigmoid-neonfma-p5-nr2fma.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700388]
389
390AARCH64_NEONFMA_UKERNELS = [
391 "src/f32-conv-hwc/3x3s2p1c3x4-neonfma-2x2.c",
392 "src/f32-conv-hwc/3x3s2p1c3x8-neonfma-2x2.c",
393 "src/f32-conv-hwc2spchw/3x3s2p1c3x4-neonfma-2x2.c",
394 "src/f32-dwconv-spchw/3x3p1-neonfma.c",
395 "src/f32-dwconv-spchw/5x5p2-neonfma.c",
396 "src/f32-dwconv-spchw/3x3s2p1-neonfma.c",
397 "src/f32-dwconv-spchw/5x5s2p2-neonfma.c",
398 "src/f32-spmm/12x1-neonfma.c",
399 "src/f32-spmm/12x2-neonfma.c",
400 "src/f32-spmm/12x4-neonfma.c",
401 "src/f32-spmm/16x1-neonfma-pipelined.c",
402 "src/f32-spmm/16x1-neonfma-unroll2.c",
403 "src/f32-spmm/16x1-neonfma.c",
404 "src/f32-spmm/16x2-neonfma.c",
405 "src/f32-spmm/16x4-neonfma.c",
406 "src/f32-spmm/4x1-neonfma-pipelined.c",
407 "src/f32-spmm/4x1-neonfma-unroll2.c",
408 "src/f32-spmm/4x1-neonfma.c",
409 "src/f32-spmm/4x2-neonfma.c",
410 "src/f32-spmm/4x4-neonfma.c",
411 "src/f32-spmm/8x1-neonfma-pipelined.c",
412 "src/f32-spmm/8x1-neonfma-unroll2.c",
413 "src/f32-spmm/8x1-neonfma.c",
414 "src/f32-spmm/8x2-neonfma.c",
415 "src/f32-spmm/8x4-neonfma.c",
416]
417
418AARCH64_NEONFP16ARITH_UKERNELS = [
419 "src/f16-gemm/4x8-neonfp16arith-ld64.c",
420 "src/f16-gemm/6x8-neonfp16arith-ld64.c",
421 "src/f16-gemm/8x8-neonfp16arith-ld64.c",
422]
423
424SSE_UKERNELS = [
425 "src/f32-avgpool/mp9p8q-sse.c",
426 "src/f32-avgpool/up9-sse.c",
Marat Dukhan35dacfb2019-11-07 19:18:16 -0800427 "src/f32-bilinear/sse-c4.c",
428 "src/f32-bilinear/sse-c8.c",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -0800429 "src/f32-binop/vadd-sse-x4.c",
430 "src/f32-binop/vadd-sse-x8.c",
431 "src/f32-binop/vaddc-sse-x4.c",
432 "src/f32-binop/vaddc-sse-x8.c",
433 "src/f32-binop/vmul-sse-x4.c",
434 "src/f32-binop/vmul-sse-x8.c",
435 "src/f32-binop/vmulc-sse-x4.c",
436 "src/f32-binop/vmulc-sse-x8.c",
437 "src/f32-binop/vrsubc-sse-x4.c",
438 "src/f32-binop/vrsubc-sse-x8.c",
439 "src/f32-binop/vsub-sse-x4.c",
440 "src/f32-binop/vsub-sse-x8.c",
441 "src/f32-binop/vsubc-sse-x4.c",
442 "src/f32-binop/vsubc-sse-x8.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700443 "src/f32-clamp/sse.c",
444 "src/f32-igemm/1x8-sse-dup.c",
445 "src/f32-igemm/1x8-sse-load1.c",
446 "src/f32-igemm/1x8s4-sse.c",
447 "src/f32-igemm/4x2c4-sse.c",
448 "src/f32-igemm/4x8-sse-dup.c",
449 "src/f32-igemm/4x8-sse-load1.c",
450 "src/f32-igemm/4x8s4-sse.c",
451 "src/f32-dwconv/up4x25-sse.c",
452 "src/f32-dwconv/up4x4-sse.c",
453 "src/f32-dwconv/up4x9-sse.c",
Marat Dukhan5098c3e2019-11-07 12:01:19 -0800454 "src/f32-dwconv/up4x25-sse-acc2.c",
455 "src/f32-dwconv/up4x4-sse-acc2.c",
456 "src/f32-dwconv/up4x9-sse-acc2.c",
457 "src/f32-dwconv/up8x25-sse.c",
458 "src/f32-dwconv/up8x4-sse.c",
459 "src/f32-dwconv/up8x9-sse.c",
460 "src/f32-dwconv/up8x25-sse-acc2.c",
461 "src/f32-dwconv/up8x4-sse-acc2.c",
462 "src/f32-dwconv/up8x9-sse-acc2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700463 "src/f32-gavgpool-spchw/sse-x4.c",
464 "src/f32-gavgpool/mp7p7q-sse.c",
465 "src/f32-gavgpool/up7-sse.c",
466 "src/f32-gemm/1x8-sse-dup.c",
467 "src/f32-gemm/1x8-sse-load1.c",
468 "src/f32-gemm/1x8s4-sse.c",
469 "src/f32-gemm/4x8-sse-dup.c",
470 "src/f32-gemm/4x8-sse-load1.c",
471 "src/f32-gemm/4x8s4-sse.c",
472 "src/f32-gemminc/1x8-sse-dup.c",
473 "src/f32-gemminc/1x8-sse-load1.c",
474 "src/f32-gemminc/1x8s4-sse.c",
475 "src/f32-gemminc/4x8-sse-dup.c",
476 "src/f32-gemminc/4x8-sse-load1.c",
477 "src/f32-gemminc/4x8s4-sse.c",
478 "src/f32-hswish/sse.c",
479 "src/f32-maxpool/9p8q-sse.c",
480 "src/f32-pavgpool/mp9p8q-sse.c",
481 "src/f32-pavgpool/up9-sse.c",
482 "src/f32-dwconv-spchw/3x3p1-sse.c",
483 "src/f32-dwconv-spchw/3x3s2p1-sse.c",
484 "src/f32-ppmm/4x8-sse.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700485 "src/f32-rmax/sse.c",
486 "src/f32-spmm/4x1-sse.c",
487 "src/f32-spmm/8x1-sse.c",
Marat Dukhan49e6ee92019-11-06 15:55:29 -0800488 "src/f32-vmulcaddc/c4-sse-2x.c",
489 "src/f32-vmulcaddc/c8-sse-2x.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700490 "src/x32-packx/x4-sse.c",
491]
492
493SSE2_UKERNELS = [
494 "src/f32-argmaxpool/mp9p8q-sse2.c",
495 "src/f32-argmaxpool/up4-sse2.c",
496 "src/f32-argmaxpool/up9-sse2.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800497 "src/f32-prelu/sse2-2x4.c",
498 "src/f32-prelu/sse2-2x8.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700499 "src/q8-avgpool/mp9p8q-sse2.c",
500 "src/q8-avgpool/up9-sse2.c",
501 "src/q8-igemm/4x4c2-sse2.c",
502 "src/q8-dwconv/up8x9-sse2.c",
503 "src/q8-gavgpool/mp7p7q-sse2.c",
504 "src/q8-gavgpool/up7-sse2.c",
505 "src/q8-gemm/2x4c8-sse2.c",
506 "src/q8-gemm/4x4c2-sse2.c",
507 "src/q8-vadd/sse2.c",
508 "src/u8-clamp/sse2.c",
509 "src/u8-maxpool/9p8q-sse2.c",
510 "src/u8-rmax/sse2.c",
511 "src/x32-pad/x2-sse2.c",
512 "src/x32-zip/x2-sse2.c",
513 "src/x32-zip/x3-sse2.c",
514 "src/x32-zip/x4-sse2.c",
515 "src/x32-zip/xm-sse2.c",
516 "src/x8-zip/x2-sse2.c",
517 "src/x8-zip/x3-sse2.c",
518 "src/x8-zip/x4-sse2.c",
519 "src/x8-zip/xm-sse2.c",
Marat Dukhanffd68402019-11-15 15:19:11 -0800520 "src/math/exp-sse2-p5.c",
521 "src/math/expminus-sse2-p5.c",
Marat Dukhan80bafd22019-11-18 10:16:01 -0800522 "src/math/sigmoid-sse2-p5-div.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700523]
524
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800525SSE41_UKERNELS = [
526 "src/f32-prelu/sse41-2x4.c",
527 "src/f32-prelu/sse41-2x8.c",
528]
529
Marat Dukhan08c4a432019-10-03 09:29:21 -0700530AVX_UKERNELS = [
531 "src/f32-rmax/avx.c",
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700532 "src/f32-vscale/avx-unroll32.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700533]
534
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700535AVX2_UKERNELS = [
Marat Dukhan97579532019-10-18 16:40:39 -0700536 "src/f32-raddexpminusmax/avx2-p5-unroll64.c",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700537 "src/f32-raddextexp/avx2-p5-unroll64.c",
Marat Dukhan97579532019-10-18 16:40:39 -0700538 "src/f32-raddstoreexpminusmax/avx2-p5-unroll64.c",
539 "src/f32-vscaleexpminusmax/avx2-p5-unroll64.c",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700540 "src/f32-vscaleextexp/avx2-p5-unroll64.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700541 "src/math/exp-avx2-p5.c",
542 "src/math/exp-avx2-perm-p3.c",
543 "src/math/exp-avx2-perm-p4.c",
Marat Dukhan515c9772019-10-17 18:07:57 -0700544 "src/math/expminus-avx2-p5.c",
Marat Dukhan98ba4412019-10-23 02:14:28 -0700545 "src/math/extexp-avx2-p5.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700546]
547
Marat Dukhan08c4a432019-10-03 09:29:21 -0700548AVX512F_UKERNELS = [
Marat Dukhan97579532019-10-18 16:40:39 -0700549 "src/f32-raddexpminusmax/avx512f-p5-scalef-unroll128.c",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700550 "src/f32-raddextexp/avx512f-p5-scalef-unroll128.c",
Marat Dukhan97579532019-10-18 16:40:39 -0700551 "src/f32-raddstoreexpminusmax/avx512f-p5-scalef-unroll128.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700552 "src/f32-rmax/avx512f.c",
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700553 "src/f32-vscale/avx512f-unroll64.c",
Marat Dukhan97579532019-10-18 16:40:39 -0700554 "src/f32-vscaleexpminusmax/avx512f-p5-scalef-unroll128.c",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700555 "src/f32-vscaleextexp/avx512f-p5-scalef-unroll128.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700556 "src/math/exp-avx512f-p5-scalef.c",
557 "src/math/exp-avx512f-p5.c",
558 "src/math/exp-avx512f-perm-p3.c",
Marat Dukhanfeb49232019-10-28 11:03:31 -0700559 "src/math/exp-avx512f-perm2-p2.c",
Marat Dukhan98ba4412019-10-23 02:14:28 -0700560 "src/math/extexp-avx512f-p5.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700561]
562
563AARCH32_ASM_UKERNELS = [
564 "src/q8-dwconv/up8x9-aarch32-neon.S",
565]
566
567AARCH64_ASM_UKERNELS = [
568 "src/f32-dwconv/up4x9-aarch64-neonfma-cortex-a55.S",
569 "src/f32-dwconv/up4x9-aarch64-neonfma.S",
570 "src/f32-gemm/1x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard21be34f2019-10-09 19:32:19 -0700571 "src/f32-gemm/1x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700572 "src/f32-gemm/1x8-aarch64-neonfma-cortex-a57.S",
573 "src/f32-gemm/1x8-aarch64-neonfma-cortex-a75.S",
574 "src/f32-gemm/4x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard46fb8072019-10-25 12:54:22 -0700575 "src/f32-gemm/4x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700576 "src/f32-gemm/4x8-aarch64-neonfma-cortex-a57.S",
577 "src/f32-gemm/4x8-aarch64-neonfma-cortex-a75.S",
578 "src/f32-gemm/4x8-aarch64-neonfma-ld128.S",
579 "src/f32-gemm/4x8-aarch64-neonfma-ld64.S",
580 "src/f32-gemm/5x8-aarch64-neonfma-cortex-a75.S",
Frank Barcharda7fb8552019-10-23 17:14:17 -0700581 "src/f32-gemm/6x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700582 "src/f32-gemm/6x8-aarch64-neonfma-cortex-a57.S",
583 "src/f32-gemm/6x8-aarch64-neonfma-cortex-a73.S",
584 "src/f32-gemm/6x8-aarch64-neonfma-cortex-a75.S",
585 "src/f32-gemm/6x8-aarch64-neonfma-ld128.S",
586 "src/f32-gemm/6x8-aarch64-neonfma-ld64.S",
587 "src/f32-gemminc/1x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard21be34f2019-10-09 19:32:19 -0700588 "src/f32-gemminc/1x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700589 "src/f32-gemminc/1x8-aarch64-neonfma-cortex-a57.S",
590 "src/f32-gemminc/1x8-aarch64-neonfma-cortex-a75.S",
591 "src/f32-gemminc/4x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard46fb8072019-10-25 12:54:22 -0700592 "src/f32-gemminc/4x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700593 "src/f32-gemminc/4x8-aarch64-neonfma-cortex-a57.S",
594 "src/f32-gemminc/4x8-aarch64-neonfma-cortex-a75.S",
595 "src/f32-gemminc/4x8-aarch64-neonfma-ld128.S",
596 "src/f32-gemminc/4x8-aarch64-neonfma-ld64.S",
597 "src/f32-gemminc/5x8-aarch64-neonfma-cortex-a75.S",
Frank Barcharda7fb8552019-10-23 17:14:17 -0700598 "src/f32-gemminc/6x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700599 "src/f32-gemminc/6x8-aarch64-neonfma-cortex-a57.S",
600 "src/f32-gemminc/6x8-aarch64-neonfma-cortex-a73.S",
601 "src/f32-gemminc/6x8-aarch64-neonfma-cortex-a75.S",
602 "src/f32-gemminc/6x8-aarch64-neonfma-ld128.S",
603 "src/f32-gemminc/6x8-aarch64-neonfma-ld64.S",
604 "src/f32-igemm/1x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard21be34f2019-10-09 19:32:19 -0700605 "src/f32-igemm/1x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700606 "src/f32-igemm/1x8-aarch64-neonfma-cortex-a57.S",
607 "src/f32-igemm/1x8-aarch64-neonfma-cortex-a75.S",
608 "src/f32-igemm/4x12-aarch64-neonfma-cortex-a53.S",
Frank Barchard46fb8072019-10-25 12:54:22 -0700609 "src/f32-igemm/4x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700610 "src/f32-igemm/4x8-aarch64-neonfma-cortex-a75.S",
611 "src/f32-igemm/5x8-aarch64-neonfma-cortex-a75.S",
Frank Barcharda7fb8552019-10-23 17:14:17 -0700612 "src/f32-igemm/6x8-aarch64-neonfma-cortex-a53.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700613 "src/f32-igemm/6x8-aarch64-neonfma-cortex-a57.S",
614 "src/f32-igemm/6x8-aarch64-neonfma-cortex-a73.S",
615 "src/f32-igemm/6x8-aarch64-neonfma-cortex-a75.S",
616]
617
618INTERNAL_MICROKERNEL_HDRS = [
619 "src/xnnpack/argmaxpool.h",
620 "src/xnnpack/avgpool.h",
Marat Dukhan35dacfb2019-11-07 19:18:16 -0800621 "src/xnnpack/bilinear.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700622 "src/xnnpack/clamp.h",
623 "src/xnnpack/common.h",
624 "src/xnnpack/conv.h",
625 "src/xnnpack/dwconv.h",
626 "src/xnnpack/gavgpool.h",
627 "src/xnnpack/gemm.h",
628 "src/xnnpack/hswish.h",
629 "src/xnnpack/igemm.h",
630 "src/xnnpack/lut.h",
631 "src/xnnpack/math.h",
632 "src/xnnpack/maxpool.h",
633 "src/xnnpack/packx.h",
634 "src/xnnpack/pad.h",
635 "src/xnnpack/params.h",
636 "src/xnnpack/pavgpool.h",
637 "src/xnnpack/ppmm.h",
638 "src/xnnpack/prelu.h",
Marat Dukhan97579532019-10-18 16:40:39 -0700639 "src/xnnpack/raddexpminusmax.h",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700640 "src/xnnpack/raddextexp.h",
Marat Dukhan97579532019-10-18 16:40:39 -0700641 "src/xnnpack/raddstoreexpminusmax.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700642 "src/xnnpack/rmax.h",
643 "src/xnnpack/scalar-utils.h",
644 "src/xnnpack/spmm.h",
645 "src/xnnpack/unpool.h",
646 "src/xnnpack/vadd.h",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -0800647 "src/xnnpack/vbinop.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700648 "src/xnnpack/vmulcaddc.h",
Marat Dukhan05ac8e32019-10-21 15:39:33 -0700649 "src/xnnpack/vscale.h",
Marat Dukhan97579532019-10-18 16:40:39 -0700650 "src/xnnpack/vscaleexpminusmax.h",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -0700651 "src/xnnpack/vscaleextexp.h",
Marat Dukhan346a9e52019-11-15 09:06:30 -0800652 "src/xnnpack/vunop.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700653 "src/xnnpack/zip.h",
654]
655
656INTERNAL_HDRS = INTERNAL_MICROKERNEL_HDRS + [
657 "include/xnnpack.h",
658 "src/xnnpack/allocator.h",
659 "src/xnnpack/compute.h",
660 "src/xnnpack/im2col.h",
661 "src/xnnpack/indirection.h",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700662 "src/xnnpack/math-stubs.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700663 "src/xnnpack/operator.h",
664 "src/xnnpack/pack.h",
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -0700665 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700666 "src/xnnpack/requantization-stubs.h",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700667 "src/xnnpack/requantization.h",
668]
669
670ACCURACY_EVAL_HDRS = INTERNAL_MICROKERNEL_HDRS + [
671 "src/xnnpack/math-stubs.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700672]
673
674MICROKERNEL_BENCHMARK_HDRS = INTERNAL_MICROKERNEL_HDRS + [
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -0700675 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700676 "include/xnnpack.h",
677]
678
679MICROKERNEL_TEST_HDRS = INTERNAL_MICROKERNEL_HDRS + [
680 "src/xnnpack/isa-checks.h",
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -0700681 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700682 "src/xnnpack/requantization.h",
683 "include/xnnpack.h",
684]
685
686OPERATOR_TEST_PARAMS_HDRS = [
687 "src/xnnpack/params.h",
688 "src/xnnpack/common.h",
689]
690
691WEIGHTS_PACK_HDRS = [
692 "src/xnnpack/pack.h",
693 "src/xnnpack/operator.h",
694 "src/xnnpack/compute.h",
695]
696
Marat Dukhanc8e00eb2019-10-04 14:55:26 -0700697LOGGING_COPTS = select({
698 # No logging in optimized mode
699 ":optimized_build": ["-DXNN_LOG_LEVEL=0"],
700 # Full logging in debug mode
701 ":debug_build": ["-DXNN_LOG_LEVEL=5"],
702 # Error-only logging in default (fastbuild) mode
703 "//conditions:default": ["-DXNN_LOG_LEVEL=2"],
704})
705
706LOGGING_HDRS = [
707 "src/xnnpack/log.h",
708]
709
Marat Dukhan08c4a432019-10-03 09:29:21 -0700710xnnpack_cc_library(
711 name = "scalar_ukernels",
712 srcs = SCALAR_UKERNELS,
713 hdrs = INTERNAL_HDRS,
714 aarch32_copts = ["-marm"],
715 copts = xnnpack_std_copts(),
716 deps = [
717 "@FP16",
718 "@FXdiv",
719 ],
720)
721
722xnnpack_cc_library(
723 name = "psimd_ukernels",
724 srcs = PSIMD_UKERNELS,
725 hdrs = INTERNAL_HDRS,
726 aarch32_copts = [
727 "-marm",
728 "-mfpu=neon",
729 ],
730 copts = xnnpack_std_copts(),
731 optimized_copts = [
732 "-O3",
733 "-ffast-math",
734 ],
735 deps = [
736 "@FP16",
737 "@psimd",
738 ],
739)
740
741xnnpack_cc_library(
742 name = "neon_ukernels",
743 hdrs = INTERNAL_HDRS,
744 aarch32_copts = [
745 "-marm",
746 "-mfpu=neon",
747 ],
748 aarch32_srcs = NEON_UKERNELS,
749 aarch64_srcs = NEON_UKERNELS,
750 copts = xnnpack_std_copts(),
751 deps = ["@FP16"],
752)
753
754xnnpack_cc_library(
755 name = "neonfma_ukernels",
756 hdrs = INTERNAL_HDRS,
757 aarch32_copts = [
758 "-marm",
759 "-mfpu=neon-vfpv4",
760 ],
761 aarch32_srcs = NEONFMA_UKERNELS,
762 aarch64_srcs = NEONFMA_UKERNELS + AARCH64_NEONFMA_UKERNELS,
763 copts = xnnpack_std_copts(),
764 deps = ["@FP16"],
765)
766
767xnnpack_cc_library(
768 name = "neonfp16arith_ukernels",
769 hdrs = INTERNAL_HDRS,
770 aarch64_copts = ["-march=armv8.2-a+fp16"],
771 aarch64_srcs = AARCH64_NEONFP16ARITH_UKERNELS,
772 copts = xnnpack_std_copts(),
773 deps = ["@FP16"],
774)
775
776xnnpack_cc_library(
777 name = "sse2_ukernels",
778 hdrs = INTERNAL_HDRS,
779 copts = xnnpack_std_copts(),
780 x86_copts = ["-msse2"],
781 x86_srcs = SSE_UKERNELS + SSE2_UKERNELS,
782 deps = ["@FP16"],
783)
784
785xnnpack_cc_library(
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800786 name = "sse41_ukernels",
787 hdrs = INTERNAL_HDRS,
788 copts = xnnpack_std_copts(),
789 x86_copts = ["-msse4.1"],
790 x86_srcs = SSE41_UKERNELS,
791 deps = ["@FP16"],
792)
793
794xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -0700795 name = "avx_ukernels",
796 hdrs = INTERNAL_HDRS,
797 copts = xnnpack_std_copts(),
798 x86_copts = ["-mavx"],
799 x86_srcs = AVX_UKERNELS,
800 deps = ["@FP16"],
801)
802
803xnnpack_cc_library(
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700804 name = "avx2_ukernels",
805 hdrs = INTERNAL_HDRS,
806 copts = xnnpack_std_copts(),
807 x86_copts = [
808 "-mfma",
809 "-mavx2",
810 ],
811 x86_srcs = AVX2_UKERNELS,
812 deps = ["@FP16"],
813)
814
815xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -0700816 name = "avx512f_ukernels",
817 hdrs = INTERNAL_HDRS,
818 copts = xnnpack_std_copts(),
819 x86_copts = ["-mavx512f"],
820 x86_srcs = AVX512F_UKERNELS,
821 deps = ["@FP16"],
822)
823
824xnnpack_cc_library(
825 name = "asm_ukernels",
826 hdrs = ["src/xnnpack/assembly.h"],
827 aarch32_srcs = AARCH32_ASM_UKERNELS,
828 aarch64_srcs = AARCH64_ASM_UKERNELS,
829)
830
831xnnpack_aggregate_library(
832 name = "ukernels",
833 aarch32_deps = [
834 ":psimd_ukernels",
835 ":neon_ukernels",
836 ":neonfma_ukernels",
837 ":asm_ukernels",
838 ],
839 aarch64_deps = [
840 ":psimd_ukernels",
841 ":neon_ukernels",
842 ":neonfma_ukernels",
843 ":neonfp16arith_ukernels",
844 ":asm_ukernels",
845 ],
846 generic_deps = [":scalar_ukernels"],
847 wasmsimd_deps = [
848 ":psimd_ukernels",
849 ],
850 x86_deps = [
851 ":psimd_ukernels",
852 ":sse2_ukernels",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -0800853 ":sse41_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700854 ":avx_ukernels",
Marat Dukhan6adff4e2019-10-14 18:32:07 -0700855 ":avx2_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700856 ":avx512f_ukernels",
857 ],
858)
859
860xnnpack_cc_library(
861 name = "im2col",
862 srcs = ["src/im2col.c"],
863 hdrs = [
864 "src/xnnpack/common.h",
865 "src/xnnpack/im2col.h",
866 ],
867 copts = xnnpack_std_copts(),
868)
869
870xnnpack_cc_library(
871 name = "indirection",
872 srcs = ["src/indirection.c"],
873 hdrs = INTERNAL_HDRS,
874 copts = xnnpack_std_copts(),
875 deps = [
876 "@FP16",
877 "@FXdiv",
878 "@pthreadpool",
879 ],
880)
881
882xnnpack_cc_library(
883 name = "operator_run",
884 srcs = ["src/operator-run.c"],
Marat Dukhanc8e00eb2019-10-04 14:55:26 -0700885 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
886 copts = xnnpack_std_copts() + LOGGING_COPTS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -0700887 # Wrappers for multi-pass microkernels use VLAs for temporary buffers.
888 "-Wno-vla",
889 ],
890 deps = [
891 "@FP16",
892 "@FXdiv",
893 "@clog",
894 "@pthreadpool",
895 ],
896)
897
898cc_library(
899 name = "enable_assembly",
900 defines = select({
901 ":xnn_enable_assembly_explicit_true": ["XNN_ENABLE_ASSEMBLY=1"],
902 ":xnn_enable_assembly_explicit_false": ["XNN_ENABLE_ASSEMBLY=0"],
Frank Barchard810171d2019-10-10 10:34:51 -0700903 "//conditions:default": ["XNN_ENABLE_ASSEMBLY=1"],
Marat Dukhan08c4a432019-10-03 09:29:21 -0700904 }),
905)
906
Marat Dukhancf056b22019-10-07 10:26:29 -0700907xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -0700908 name = "operators",
909 srcs = OPERATOR_SRCS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -0700910 "src/operator-delete.c",
Marat Dukhancf056b22019-10-07 10:26:29 -0700911 ],
912 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
Marat Dukhanc8e00eb2019-10-04 14:55:26 -0700913 copts = xnnpack_std_copts() + LOGGING_COPTS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -0700914 "-Isrc",
915 "-Iinclude",
916 ] + select({
917 ":debug_build": [],
918 "//conditions:default": xnnpack_min_size_copts(),
919 }),
Marat Dukhancf056b22019-10-07 10:26:29 -0700920 wasm_srcs = ["src/wasm-stubs.c"],
921 wasmsimd_srcs = ["src/wasm-stubs.c"],
Marat Dukhan08c4a432019-10-03 09:29:21 -0700922 deps = [
Marat Dukhan08c4a432019-10-03 09:29:21 -0700923 ":indirection",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700924 "@FP16",
925 "@FXdiv",
926 "@clog",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700927 "@pthreadpool",
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700928 ],
929)
930
931cc_library(
932 name = "XNNPACK",
933 srcs = [
934 "src/init.c",
935 ],
936 copts = xnnpack_std_copts() + LOGGING_COPTS + [
937 "-Isrc",
938 "-Iinclude",
939 ] + select({
940 ":debug_build": [],
941 "//conditions:default": xnnpack_min_size_copts(),
942 }),
943 includes = ["include"],
944 linkstatic = True,
945 textual_hdrs = ["include/xnnpack.h"],
946 visibility = xnnpack_visibility(),
947 deps = [
948 ":enable_assembly",
949 ":ukernels",
950 ":operator_run",
951 ":operators",
952 "@clog",
953 "@pthreadpool",
Marat Dukhand343c222019-10-07 09:22:14 -0700954 ] + select({
955 ":emscripten": [],
956 "//conditions:default": ["@cpuinfo"],
957 }),
Marat Dukhan08c4a432019-10-03 09:29:21 -0700958)
959
960cc_library(
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700961 name = "xnnpack_operators_nhwc_f32",
962 srcs = [
963 "src/init.c",
964 ],
965 copts = xnnpack_std_copts() + LOGGING_COPTS + [
966 "-Isrc",
967 "-Iinclude",
968 ] + select({
969 ":debug_build": [],
970 "//conditions:default": xnnpack_min_size_copts(),
971 }),
972 defines = [
973 "XNN_NO_Q8_OPERATORS",
974 "XNN_NO_U8_OPERATORS",
975 "XNN_NO_X8_OPERATORS",
Marat Dukhanefc47b82019-11-18 09:25:38 -0800976 "XNN_NO_NCHW_OPERATORS",
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700977 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -0700978 includes = ["include"],
979 linkstatic = True,
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700980 textual_hdrs = ["include/xnnpack.h"],
Marat Dukhan08c4a432019-10-03 09:29:21 -0700981 visibility = xnnpack_visibility(),
982 deps = [
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700983 ":enable_assembly",
984 ":ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700985 ":operator_run",
986 ":operators",
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700987 "@clog",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700988 "@pthreadpool",
Marat Dukhan8fe54e42019-10-10 14:12:59 -0700989 ] + select({
990 ":emscripten": [],
991 "//conditions:default": ["@cpuinfo"],
992 }),
Marat Dukhan08c4a432019-10-03 09:29:21 -0700993)
994
Marat Dukhancf056b22019-10-07 10:26:29 -0700995xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -0700996 name = "bench_utils",
997 srcs = ["bench/utils.cc"],
998 hdrs = ["bench/utils.h"],
999 copts = ["-Wno-unused-result"],
Marat Dukhanbad48fe2019-11-04 10:35:22 -08001000 deps = [
1001 "@com_google_benchmark//:benchmark",
1002 "@cpuinfo",
1003 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07001004)
1005
Frank Barchard7e955972019-10-11 10:34:25 -07001006######################### Benchmarks for micro-kernels #########################
Marat Dukhan08c4a432019-10-03 09:29:21 -07001007
1008xnnpack_benchmark(
1009 name = "q8_gemm_bench",
1010 srcs = [
1011 "bench/gemm.h",
1012 "bench/q8-gemm.cc",
1013 "src/xnnpack/AlignedAllocator.h",
1014 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1015 copts = ["-Wno-unused-function"] + xnnpack_optional_ruy_copts() + xnnpack_optional_gemmlowp_copts(),
1016 deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_ruy_deps() + xnnpack_optional_gemmlowp_deps(),
1017)
1018
1019xnnpack_benchmark(
1020 name = "f16_gemm_bench",
1021 srcs = [
1022 "bench/f16-gemm.cc",
1023 "bench/gemm.h",
1024 "src/xnnpack/AlignedAllocator.h",
1025 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1026 copts = ["-Wno-unused-function"],
1027 deps = MICROKERNEL_BENCHMARK_DEPS,
1028)
1029
1030xnnpack_benchmark(
1031 name = "f32_igemm_bench",
1032 srcs = [
1033 "bench/f32-igemm.cc",
1034 "bench/conv.h",
1035 "src/xnnpack/AlignedAllocator.h",
1036 ] + MICROKERNEL_BENCHMARK_HDRS,
Frank Barchard7e955972019-10-11 10:34:25 -07001037 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07001038)
1039
1040xnnpack_benchmark(
1041 name = "f32_conv_hwc_bench",
1042 srcs = [
1043 "bench/f32-conv-hwc.cc",
1044 "bench/dconv.h",
1045 "src/xnnpack/AlignedAllocator.h",
1046 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1047 copts = ["-Wno-unused-function"],
1048 deps = MICROKERNEL_BENCHMARK_DEPS,
1049)
1050
1051xnnpack_benchmark(
Erich Elsen563df5f2019-10-23 08:02:21 -07001052 name = "f32_conv_hwc2spchw_bench",
1053 srcs = [
1054 "bench/f32-conv-hwc2spchw.cc",
1055 "bench/dconv.h",
1056 "src/xnnpack/AlignedAllocator.h",
1057 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1058 copts = ["-Wno-unused-function"],
1059 deps = MICROKERNEL_BENCHMARK_DEPS,
1060)
1061
1062xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001063 name = "f32_dwconv_bench",
1064 srcs = [
1065 "bench/f32-dwconv.cc",
1066 "bench/dwconv.h",
1067 "src/xnnpack/AlignedAllocator.h",
1068 ] + MICROKERNEL_BENCHMARK_HDRS,
1069 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
1070)
1071
1072xnnpack_benchmark(
1073 name = "f32_dwconv_spchw_bench",
1074 srcs = [
1075 "bench/f32-dwconv-spchw.cc",
1076 "bench/dwconv.h",
1077 "src/xnnpack/AlignedAllocator.h",
1078 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1079 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
1080)
1081
1082xnnpack_benchmark(
1083 name = "f32_gemm_bench",
1084 srcs = [
1085 "bench/f32-gemm.cc",
1086 "bench/gemm.h",
1087 "src/xnnpack/AlignedAllocator.h",
1088 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1089 copts = ["-Wno-unused-function"] + xnnpack_optional_ruy_copts(),
Frank Barchard7e955972019-10-11 10:34:25 -07001090 deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_ruy_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07001091)
1092
1093xnnpack_benchmark(
1094 name = "f32_rmax_bench",
1095 srcs = [
1096 "bench/f32-rmax.cc",
1097 "src/xnnpack/AlignedAllocator.h",
1098 ] + MICROKERNEL_BENCHMARK_HDRS,
1099 deps = MICROKERNEL_BENCHMARK_DEPS,
1100)
1101
1102xnnpack_benchmark(
Marat Dukhan14bec502019-11-18 11:35:31 -08001103 name = "f32_sigmoid_bench",
1104 srcs = [
1105 "bench/f32-sigmoid.cc",
1106 "src/xnnpack/AlignedAllocator.h",
1107 ] + MICROKERNEL_BENCHMARK_HDRS,
1108 copts = ["-Wno-unused-function"],
1109 deps = MICROKERNEL_BENCHMARK_DEPS,
1110)
1111
1112xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001113 name = "f32_spmm_bench",
1114 srcs = [
1115 "bench/f32-spmm.cc",
1116 "bench/gemm.h",
1117 "src/xnnpack/AlignedAllocator.h",
1118 ] + MICROKERNEL_BENCHMARK_HDRS,
1119 copts = ["-Wno-unused-function"],
1120 deps = MICROKERNEL_BENCHMARK_DEPS,
1121)
1122
1123xnnpack_benchmark(
Marat Dukhan4a4a7fa2019-10-21 13:46:14 -07001124 name = "f32_softargmax_bench",
1125 srcs = [
1126 "bench/f32-softargmax.cc",
1127 ] + MICROKERNEL_BENCHMARK_HDRS,
1128 copts = ["-Wno-unused-function"],
1129 deps = MICROKERNEL_BENCHMARK_DEPS,
1130)
1131
1132xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001133 name = "f32_im2col_gemm_bench",
1134 srcs = [
1135 "bench/f32-im2col-gemm.cc",
1136 "bench/conv.h",
1137 "src/xnnpack/AlignedAllocator.h",
1138 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
1139 deps = MICROKERNEL_BENCHMARK_DEPS + [":im2col"],
1140)
1141
1142########################### Benchmarks for operators ###########################
1143
1144xnnpack_benchmark(
1145 name = "add_bench",
1146 srcs = ["bench/add.cc"],
1147 deps = OPERATOR_BENCHMARK_DEPS,
1148)
1149
1150xnnpack_benchmark(
1151 name = "average_pooling_bench",
1152 srcs = ["bench/average-pooling.cc"],
1153 deps = OPERATOR_BENCHMARK_DEPS,
1154)
1155
1156xnnpack_benchmark(
1157 name = "channel_shuffle_bench",
1158 srcs = ["bench/channel-shuffle.cc"],
1159 deps = OPERATOR_BENCHMARK_DEPS,
1160)
1161
1162xnnpack_benchmark(
1163 name = "convolution_bench",
1164 srcs = ["bench/convolution.cc"],
1165 copts = xnnpack_optional_tflite_copts() + xnnpack_optional_armcl_copts(),
1166 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps() + xnnpack_optional_armcl_deps(),
1167)
1168
1169xnnpack_benchmark(
1170 name = "deconvolution_bench",
1171 srcs = ["bench/deconvolution.cc"],
1172 copts = xnnpack_optional_tflite_copts(),
1173 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
1174)
1175
1176xnnpack_benchmark(
1177 name = "global_average_pooling_bench",
1178 srcs = ["bench/global-average-pooling.cc"],
1179 deps = OPERATOR_BENCHMARK_DEPS,
1180)
1181
1182xnnpack_benchmark(
1183 name = "max_pooling_bench",
1184 srcs = ["bench/max-pooling.cc"],
1185 deps = OPERATOR_BENCHMARK_DEPS,
1186)
1187
1188xnnpack_benchmark(
1189 name = "sigmoid_bench",
1190 srcs = ["bench/sigmoid.cc"],
Marat Dukhanc3b9e862019-11-17 13:18:54 -08001191 copts = xnnpack_optional_tflite_copts(),
1192 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07001193)
1194
1195xnnpack_benchmark(
Marat Dukhan95b22432019-10-30 16:30:14 -07001196 name = "prelu_bench",
1197 srcs = ["bench/prelu.cc"],
1198 copts = xnnpack_optional_tflite_copts(),
1199 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
1200)
1201
1202xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001203 name = "softargmax_bench",
1204 srcs = ["bench/softargmax.cc"],
1205 deps = OPERATOR_BENCHMARK_DEPS,
1206)
1207
Marat Dukhanc068bb62019-10-04 13:24:39 -07001208############################# End-to-end benchmarks ############################
1209
1210cc_library(
1211 name = "mobilenet_v1",
1212 srcs = ["models/mobilenet-v1.cc"],
1213 hdrs = ["models/models.h"],
1214 linkstatic = True,
1215 deps = [
1216 ":XNNPACK",
1217 "@pthreadpool",
1218 ],
1219)
1220
1221cc_library(
1222 name = "mobilenet_v2",
1223 srcs = ["models/mobilenet-v2.cc"],
1224 hdrs = ["models/models.h"],
1225 linkstatic = True,
1226 deps = [
1227 ":XNNPACK",
1228 "@pthreadpool",
1229 ],
1230)
1231
1232xnnpack_benchmark(
Marat Dukhanef4416e2019-10-31 13:44:40 -07001233 name = "f32_dwconv_e2e_bench",
1234 srcs = ["bench/f32-dwconv-e2e.cc"] + MICROKERNEL_BENCHMARK_HDRS,
1235 copts = ["-Wno-unused-function"],
1236 deps = MICROKERNEL_BENCHMARK_DEPS + [
1237 ":XNNPACK",
1238 ":mobilenet_v1",
1239 ":mobilenet_v2",
1240 ],
1241)
1242
1243xnnpack_benchmark(
Marat Dukhan5f18d262019-10-31 10:24:14 -07001244 name = "f32_gemm_e2e_bench",
1245 srcs = ["bench/f32-gemm-e2e.cc"] + MICROKERNEL_BENCHMARK_HDRS,
1246 copts = ["-Wno-unused-function"],
1247 deps = MICROKERNEL_BENCHMARK_DEPS + [
1248 ":XNNPACK",
1249 ":mobilenet_v1",
1250 ":mobilenet_v2",
1251 ],
1252)
1253
1254xnnpack_benchmark(
Marat Dukhanc068bb62019-10-04 13:24:39 -07001255 name = "end2end_bench",
1256 srcs = ["bench/end2end.cc"],
1257 deps = [
1258 ":XNNPACK",
Frank Barchardc712fa42019-10-31 14:00:21 -07001259 ":bench_utils",
Marat Dukhanc068bb62019-10-04 13:24:39 -07001260 ":mobilenet_v1",
1261 ":mobilenet_v2",
1262 "@pthreadpool",
1263 ],
1264)
1265
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001266#################### Accuracy evaluation for math functions ####################
1267
1268xnnpack_benchmark(
1269 name = "f32_exp_eval",
1270 srcs = [
1271 "eval/f32-exp.cc",
1272 "src/xnnpack/AlignedAllocator.h",
1273 ] + ACCURACY_EVAL_HDRS,
1274 deps = ACCURACY_EVAL_DEPS,
1275)
1276
Marat Dukhan515c9772019-10-17 18:07:57 -07001277xnnpack_benchmark(
1278 name = "f32_expminus_eval",
1279 srcs = [
1280 "eval/f32-expminus.cc",
1281 "src/xnnpack/AlignedAllocator.h",
1282 ] + ACCURACY_EVAL_HDRS,
1283 deps = ACCURACY_EVAL_DEPS,
1284)
1285
Marat Dukhan98ba4412019-10-23 02:14:28 -07001286xnnpack_benchmark(
1287 name = "f32_extexp_eval",
1288 srcs = [
1289 "eval/f32-extexp.cc",
1290 "src/xnnpack/AlignedAllocator.h",
1291 ] + ACCURACY_EVAL_HDRS,
1292 deps = ACCURACY_EVAL_DEPS,
1293)
1294
Marat Dukhan346a9e52019-11-15 09:06:30 -08001295xnnpack_benchmark(
1296 name = "f32_sigmoid_eval",
1297 srcs = [
1298 "eval/f32-sigmoid.cc",
1299 "src/xnnpack/AlignedAllocator.h",
1300 ] + ACCURACY_EVAL_HDRS,
1301 deps = ACCURACY_EVAL_DEPS,
1302)
1303
Marat Dukhan08c4a432019-10-03 09:29:21 -07001304######################### Unit tests for micro-kernels #########################
1305
1306xnnpack_unit_test(
1307 name = "f16_gemm_test",
1308 srcs = [
1309 "test/f16-gemm.cc",
1310 "test/gemm-microkernel-tester.h",
1311 "src/xnnpack/AlignedAllocator.h",
1312 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1313 deps = MICROKERNEL_TEST_DEPS,
1314)
1315
1316xnnpack_unit_test(
1317 name = "f32_argmaxpool_test",
1318 srcs = [
1319 "test/f32-argmaxpool.cc",
1320 "test/argmaxpool-microkernel-tester.h",
1321 "src/xnnpack/AlignedAllocator.h",
1322 ] + MICROKERNEL_TEST_HDRS,
1323 deps = MICROKERNEL_TEST_DEPS,
1324)
1325
1326xnnpack_unit_test(
1327 name = "f32_avgpool_test",
1328 srcs = [
1329 "test/f32-avgpool.cc",
1330 "test/avgpool-microkernel-tester.h",
1331 "src/xnnpack/AlignedAllocator.h",
1332 ] + MICROKERNEL_TEST_HDRS,
1333 deps = MICROKERNEL_TEST_DEPS,
1334)
1335
1336xnnpack_unit_test(
Marat Dukhan35dacfb2019-11-07 19:18:16 -08001337 name = "f32_bilinear_test",
1338 srcs = [
1339 "test/f32-bilinear.cc",
1340 "test/bilinear-microkernel-tester.h",
1341 "src/xnnpack/AlignedAllocator.h",
1342 ] + MICROKERNEL_TEST_HDRS,
1343 deps = MICROKERNEL_TEST_DEPS,
1344)
1345
1346xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001347 name = "f32_clamp_test",
1348 srcs = [
1349 "test/f32-clamp.cc",
1350 "test/clamp-microkernel-tester.h",
1351 ] + MICROKERNEL_TEST_HDRS,
1352 deps = MICROKERNEL_TEST_DEPS,
1353)
1354
1355xnnpack_unit_test(
1356 name = "f32_igemm_test",
1357 srcs = [
1358 "test/f32-igemm.cc",
1359 "test/gemm-microkernel-tester.h",
1360 "src/xnnpack/AlignedAllocator.h",
1361 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1362 deps = MICROKERNEL_TEST_DEPS,
1363)
1364
1365xnnpack_unit_test(
1366 name = "f32_conv_hwc_test",
1367 srcs = [
1368 "test/f32-conv-hwc.cc",
1369 "test/conv-hwc-microkernel-tester.h",
1370 "src/xnnpack/AlignedAllocator.h",
1371 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1372 deps = MICROKERNEL_TEST_DEPS,
1373)
1374
1375xnnpack_unit_test(
1376 name = "f32_conv_hwc2spchw_test",
1377 srcs = [
1378 "test/f32-conv-hwc2spchw.cc",
1379 "test/conv-hwc2spchw-microkernel-tester.h",
1380 "src/xnnpack/AlignedAllocator.h",
1381 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1382 deps = MICROKERNEL_TEST_DEPS,
1383)
1384
1385xnnpack_unit_test(
1386 name = "f32_dwconv_test",
1387 srcs = [
1388 "test/f32-dwconv.cc",
1389 "test/dwconv-microkernel-tester.h",
1390 "src/xnnpack/AlignedAllocator.h",
1391 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1392 deps = MICROKERNEL_TEST_DEPS,
1393)
1394
1395xnnpack_unit_test(
1396 name = "f32_dwconv_spchw_test",
1397 srcs = [
1398 "test/f32-dwconv-spchw.cc",
1399 "test/dwconv-spchw-microkernel-tester.h",
1400 "src/xnnpack/AlignedAllocator.h",
1401 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1402 deps = MICROKERNEL_TEST_DEPS,
1403)
1404
1405xnnpack_unit_test(
1406 name = "f32_gavgpool_test",
1407 srcs = [
1408 "test/f32-gavgpool.cc",
1409 "test/gavgpool-microkernel-tester.h",
1410 "src/xnnpack/AlignedAllocator.h",
1411 ] + MICROKERNEL_TEST_HDRS,
1412 deps = MICROKERNEL_TEST_DEPS,
1413)
1414
1415xnnpack_unit_test(
1416 name = "f32_gavgpool_spchw_test",
1417 srcs = [
1418 "test/f32-gavgpool-spchw.cc",
1419 "test/gavgpool-spchw-microkernel-tester.h",
1420 "src/xnnpack/AlignedAllocator.h",
1421 ] + MICROKERNEL_TEST_HDRS,
1422 deps = MICROKERNEL_TEST_DEPS,
1423)
1424
1425xnnpack_unit_test(
1426 name = "f32_gemm_test",
1427 srcs = [
1428 "test/f32-gemm.cc",
1429 "test/gemm-microkernel-tester.h",
1430 "src/xnnpack/AlignedAllocator.h",
1431 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1432 deps = MICROKERNEL_TEST_DEPS,
1433)
1434
1435xnnpack_unit_test(
1436 name = "f32_gemminc_test",
1437 srcs = [
1438 "test/f32-gemminc.cc",
1439 "test/gemm-microkernel-tester.h",
1440 "src/xnnpack/AlignedAllocator.h",
1441 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1442 deps = MICROKERNEL_TEST_DEPS,
1443)
1444
1445xnnpack_unit_test(
1446 name = "f32_hswish_test",
1447 srcs = [
1448 "test/f32-hswish.cc",
1449 "test/hswish-microkernel-tester.h",
1450 ] + MICROKERNEL_TEST_HDRS,
1451 deps = MICROKERNEL_TEST_DEPS,
1452)
1453
1454xnnpack_unit_test(
1455 name = "f32_maxpool_test",
1456 srcs = [
1457 "test/f32-maxpool.cc",
1458 "test/maxpool-microkernel-tester.h",
1459 ] + MICROKERNEL_TEST_HDRS,
1460 deps = MICROKERNEL_TEST_DEPS,
1461)
1462
1463xnnpack_unit_test(
1464 name = "f32_pavgpool_test",
1465 srcs = [
1466 "test/f32-pavgpool.cc",
1467 "test/avgpool-microkernel-tester.h",
1468 "src/xnnpack/AlignedAllocator.h",
1469 ] + MICROKERNEL_TEST_HDRS,
1470 deps = MICROKERNEL_TEST_DEPS,
1471)
1472
1473xnnpack_unit_test(
1474 name = "f32_ppmm_test",
1475 srcs = [
1476 "test/f32-ppmm.cc",
1477 "test/gemm-microkernel-tester.h",
1478 "src/xnnpack/AlignedAllocator.h",
1479 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1480 deps = MICROKERNEL_TEST_DEPS,
1481)
1482
1483xnnpack_unit_test(
1484 name = "f32_prelu_test",
1485 srcs = [
1486 "test/f32-prelu.cc",
1487 "test/prelu-microkernel-tester.h",
1488 "src/xnnpack/AlignedAllocator.h",
1489 ] + MICROKERNEL_TEST_HDRS,
1490 deps = MICROKERNEL_TEST_DEPS,
1491)
1492
1493xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07001494 name = "f32_raddexpminusmax_test",
1495 srcs = [
1496 "test/f32-raddexpminusmax.cc",
1497 "test/raddexpminusmax-microkernel-tester.h",
1498 ] + MICROKERNEL_TEST_HDRS,
1499 deps = MICROKERNEL_TEST_DEPS,
1500)
1501
1502xnnpack_unit_test(
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07001503 name = "f32_raddextexp_test",
1504 srcs = [
1505 "test/f32-raddextexp.cc",
1506 "test/raddextexp-microkernel-tester.h",
1507 ] + MICROKERNEL_TEST_HDRS,
1508 deps = MICROKERNEL_TEST_DEPS,
1509)
1510
1511xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07001512 name = "f32_raddstoreexpminusmax_test",
1513 srcs = [
1514 "test/f32-raddstoreexpminusmax.cc",
1515 "test/raddstoreexpminusmax-microkernel-tester.h",
1516 ] + MICROKERNEL_TEST_HDRS,
1517 deps = MICROKERNEL_TEST_DEPS,
1518)
1519
1520xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001521 name = "f32_rmax_test",
1522 srcs = [
1523 "test/f32-rmax.cc",
1524 "test/rmax-microkernel-tester.h",
1525 ] + MICROKERNEL_TEST_HDRS,
1526 deps = MICROKERNEL_TEST_DEPS,
1527)
1528
1529xnnpack_unit_test(
Marat Dukhan346a9e52019-11-15 09:06:30 -08001530 name = "f32_sigmoid_test",
1531 srcs = [
1532 "test/f32-sigmoid.cc",
1533 "test/vunop-microkernel-tester.h",
1534 ] + MICROKERNEL_TEST_HDRS,
1535 deps = MICROKERNEL_TEST_DEPS,
1536)
1537
1538xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001539 name = "f32_spmm_test",
1540 srcs = [
1541 "test/f32-spmm.cc",
1542 "test/spmm-microkernel-tester.h",
1543 "src/xnnpack/AlignedAllocator.h",
1544 ] + MICROKERNEL_TEST_HDRS,
1545 deps = MICROKERNEL_TEST_DEPS,
1546)
1547
1548xnnpack_unit_test(
1549 name = "f32_vadd_test",
1550 srcs = [
1551 "test/f32-vadd.cc",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08001552 "test/vbinop-microkernel-tester.h",
1553 ] + MICROKERNEL_TEST_HDRS,
1554 deps = MICROKERNEL_TEST_DEPS,
1555)
1556
1557xnnpack_unit_test(
1558 name = "f32_vaddc_test",
1559 srcs = [
1560 "test/f32-vaddc.cc",
1561 "test/vbinopc-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001562 ] + MICROKERNEL_TEST_HDRS,
1563 deps = MICROKERNEL_TEST_DEPS,
1564)
1565
1566xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001567 name = "f32_vmul_test",
1568 srcs = [
1569 "test/f32-vmul.cc",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08001570 "test/vbinop-microkernel-tester.h",
1571 ] + MICROKERNEL_TEST_HDRS,
1572 deps = MICROKERNEL_TEST_DEPS,
1573)
1574
1575xnnpack_unit_test(
1576 name = "f32_vmulc_test",
1577 srcs = [
1578 "test/f32-vmulc.cc",
1579 "test/vbinopc-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001580 ] + MICROKERNEL_TEST_HDRS,
1581 deps = MICROKERNEL_TEST_DEPS,
1582)
1583
1584xnnpack_unit_test(
1585 name = "f32_vmulcaddc_test",
1586 srcs = [
1587 "test/f32-vmulcaddc.cc",
1588 "test/vmulcaddc-microkernel-tester.h",
1589 "src/xnnpack/AlignedAllocator.h",
1590 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1591 deps = MICROKERNEL_TEST_DEPS,
1592)
1593
1594xnnpack_unit_test(
Marat Dukhan05ac8e32019-10-21 15:39:33 -07001595 name = "f32_vscale_test",
1596 srcs = [
1597 "test/f32-vscale.cc",
1598 "test/vscale-microkernel-tester.h",
1599 ] + MICROKERNEL_TEST_HDRS,
1600 deps = MICROKERNEL_TEST_DEPS,
1601)
1602
1603xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07001604 name = "f32_vscaleexpminusmax_test",
1605 srcs = [
1606 "test/f32-vscaleexpminusmax.cc",
1607 "test/vscaleexpminusmax-microkernel-tester.h",
1608 ] + MICROKERNEL_TEST_HDRS,
1609 deps = MICROKERNEL_TEST_DEPS,
1610)
1611
1612xnnpack_unit_test(
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07001613 name = "f32_vscaleextexp_test",
1614 srcs = [
1615 "test/f32-vscaleextexp.cc",
1616 "test/vscaleextexp-microkernel-tester.h",
1617 ] + MICROKERNEL_TEST_HDRS,
1618 deps = MICROKERNEL_TEST_DEPS,
1619)
1620
1621xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07001622 name = "f32_vsub_test",
1623 srcs = [
1624 "test/f32-vsub.cc",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08001625 "test/vbinop-microkernel-tester.h",
1626 ] + MICROKERNEL_TEST_HDRS,
1627 deps = MICROKERNEL_TEST_DEPS,
1628)
1629
1630xnnpack_unit_test(
1631 name = "f32_vsubc_test",
1632 srcs = [
1633 "test/f32-vsubc.cc",
1634 "test/vbinopc-microkernel-tester.h",
1635 ] + MICROKERNEL_TEST_HDRS,
1636 deps = MICROKERNEL_TEST_DEPS,
1637)
1638
1639xnnpack_unit_test(
1640 name = "f32_vrsubc_test",
1641 srcs = [
1642 "test/f32-vrsubc.cc",
1643 "test/vbinopc-microkernel-tester.h",
Marat Dukhan97579532019-10-18 16:40:39 -07001644 ] + MICROKERNEL_TEST_HDRS,
1645 deps = MICROKERNEL_TEST_DEPS,
1646)
1647
1648xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001649 name = "q8_avgpool_test",
1650 srcs = [
1651 "test/q8-avgpool.cc",
1652 "test/avgpool-microkernel-tester.h",
1653 "src/xnnpack/AlignedAllocator.h",
1654 ] + MICROKERNEL_TEST_HDRS,
1655 deps = MICROKERNEL_TEST_DEPS,
1656)
1657
1658xnnpack_unit_test(
1659 name = "q8_igemm_test",
1660 srcs = [
1661 "test/q8-igemm.cc",
1662 "test/gemm-microkernel-tester.h",
1663 "src/xnnpack/AlignedAllocator.h",
1664 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1665 deps = MICROKERNEL_TEST_DEPS,
1666)
1667
1668xnnpack_unit_test(
1669 name = "q8_dwconv_test",
1670 srcs = [
1671 "test/q8-dwconv.cc",
1672 "test/dwconv-microkernel-tester.h",
1673 "src/xnnpack/AlignedAllocator.h",
1674 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1675 deps = MICROKERNEL_TEST_DEPS,
1676)
1677
1678xnnpack_unit_test(
1679 name = "q8_gavgpool_test",
1680 srcs = [
1681 "test/q8-gavgpool.cc",
1682 "test/gavgpool-microkernel-tester.h",
1683 "src/xnnpack/AlignedAllocator.h",
1684 ] + MICROKERNEL_TEST_HDRS,
1685 deps = MICROKERNEL_TEST_DEPS,
1686)
1687
1688xnnpack_unit_test(
1689 name = "q8_gemm_test",
1690 srcs = [
1691 "test/q8-gemm.cc",
1692 "test/gemm-microkernel-tester.h",
1693 "src/xnnpack/AlignedAllocator.h",
1694 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
1695 deps = MICROKERNEL_TEST_DEPS,
1696)
1697
1698xnnpack_unit_test(
1699 name = "q8_vadd_test",
1700 srcs = [
1701 "test/q8-vadd.cc",
1702 "test/vadd-microkernel-tester.h",
1703 ] + MICROKERNEL_TEST_HDRS,
1704 deps = MICROKERNEL_TEST_DEPS,
1705)
1706
1707xnnpack_unit_test(
1708 name = "u8_clamp_test",
1709 srcs = [
1710 "test/u8-clamp.cc",
1711 "test/clamp-microkernel-tester.h",
1712 ] + MICROKERNEL_TEST_HDRS,
1713 deps = MICROKERNEL_TEST_DEPS,
1714)
1715
1716xnnpack_unit_test(
1717 name = "u8_lut32norm_test",
1718 srcs = [
1719 "test/u8-lut32norm.cc",
1720 "test/lut-norm-microkernel-tester.h",
1721 ] + MICROKERNEL_TEST_HDRS,
1722 deps = MICROKERNEL_TEST_DEPS,
1723)
1724
1725xnnpack_unit_test(
1726 name = "u8_maxpool_test",
1727 srcs = [
1728 "test/u8-maxpool.cc",
1729 "test/maxpool-microkernel-tester.h",
1730 ] + MICROKERNEL_TEST_HDRS,
1731 deps = MICROKERNEL_TEST_DEPS,
1732)
1733
1734xnnpack_unit_test(
1735 name = "u8_rmax_test",
1736 srcs = [
1737 "test/u8-rmax.cc",
1738 "test/rmax-microkernel-tester.h",
1739 ] + MICROKERNEL_TEST_HDRS,
1740 deps = MICROKERNEL_TEST_DEPS,
1741)
1742
1743xnnpack_unit_test(
1744 name = "x32_packx_test",
1745 srcs = [
1746 "test/x32-packx.cc",
1747 "test/pack-microkernel-tester.h",
1748 "src/xnnpack/AlignedAllocator.h",
1749 ] + MICROKERNEL_TEST_HDRS,
1750 deps = MICROKERNEL_TEST_DEPS,
1751)
1752
1753xnnpack_unit_test(
1754 name = "x32_pad_test",
1755 srcs = [
1756 "test/x32-pad.cc",
1757 "test/pad-microkernel-tester.h",
1758 ] + MICROKERNEL_TEST_HDRS,
1759 deps = MICROKERNEL_TEST_DEPS,
1760)
1761
1762xnnpack_unit_test(
1763 name = "x32_unpool_test",
1764 srcs = [
1765 "test/x32-unpool.cc",
1766 "test/unpool-microkernel-tester.h",
1767 ] + MICROKERNEL_TEST_HDRS,
1768 deps = MICROKERNEL_TEST_DEPS,
1769)
1770
1771xnnpack_unit_test(
1772 name = "x32_zip_test",
1773 srcs = [
1774 "test/x32-zip.cc",
1775 "test/zip-microkernel-tester.h",
1776 ] + MICROKERNEL_TEST_HDRS,
1777 deps = MICROKERNEL_TEST_DEPS,
1778)
1779
1780xnnpack_unit_test(
1781 name = "x8_lut_test",
1782 srcs = [
1783 "test/x8-lut.cc",
1784 "test/lut-microkernel-tester.h",
1785 ] + MICROKERNEL_TEST_HDRS,
1786 deps = MICROKERNEL_TEST_DEPS,
1787)
1788
1789xnnpack_unit_test(
1790 name = "x8_zip_test",
1791 srcs = [
1792 "test/x8-zip.cc",
1793 "test/zip-microkernel-tester.h",
1794 ] + MICROKERNEL_TEST_HDRS,
1795 deps = MICROKERNEL_TEST_DEPS,
1796)
1797
1798########################### Size test for the library ##########################
1799
1800xnnpack_binary(
1801 name = "size_test",
1802 srcs = ["test/size.c"],
Marat Dukhan8fe54e42019-10-10 14:12:59 -07001803 deps = [":xnnpack_operators_nhwc_f32"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07001804)
1805
1806########################### Unit tests for operators ###########################
1807
1808xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001809 name = "add_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001810 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001811 "test/add-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001812 "test/add-operator-tester.h",
1813 ],
1814 deps = OPERATOR_TEST_DEPS,
1815)
1816
1817xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001818 name = "argmax_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001819 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001820 "test/argmax-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001821 "test/argmax-pooling-operator-tester.h",
1822 ] + OPERATOR_TEST_PARAMS_HDRS,
1823 deps = OPERATOR_TEST_DEPS,
1824)
1825
1826xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001827 name = "average_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001828 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001829 "test/average-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001830 "test/average-pooling-operator-tester.h",
1831 ] + OPERATOR_TEST_PARAMS_HDRS,
1832 deps = OPERATOR_TEST_DEPS,
1833)
1834
1835xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001836 name = "channel_pad_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001837 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001838 "test/channel-pad-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001839 "test/channel-pad-operator-tester.h",
1840 ] + OPERATOR_TEST_PARAMS_HDRS,
1841 deps = OPERATOR_TEST_DEPS,
1842)
1843
1844xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001845 name = "channel_shuffle_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001846 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001847 "test/channel-shuffle-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001848 "test/channel-shuffle-operator-tester.h",
1849 ],
1850 deps = OPERATOR_TEST_DEPS,
1851)
1852
1853xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001854 name = "clamp_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001855 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001856 "test/clamp-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001857 "test/clamp-operator-tester.h",
1858 ],
1859 deps = OPERATOR_TEST_DEPS,
1860)
1861
1862xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001863 name = "convolution_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001864 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001865 "test/convolution-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001866 "test/convolution-operator-tester.h",
1867 ],
1868 deps = OPERATOR_TEST_DEPS,
1869)
1870
1871xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001872 name = "convolution_nchw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001873 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001874 "test/convolution-nchw.cc",
1875 "test/convolution-operator-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001876 ],
1877 deps = OPERATOR_TEST_DEPS,
1878)
1879
1880xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001881 name = "deconvolution_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001882 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001883 "test/deconvolution-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001884 "test/deconvolution-operator-tester.h",
1885 ] + OPERATOR_TEST_PARAMS_HDRS,
1886 deps = OPERATOR_TEST_DEPS,
1887)
1888
1889xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001890 name = "fully_connected_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001891 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001892 "test/fully-connected-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001893 "test/fully-connected-operator-tester.h",
1894 ],
1895 deps = OPERATOR_TEST_DEPS,
1896)
1897
1898xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001899 name = "global_average_pooling_nwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001900 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001901 "test/global-average-pooling-nwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001902 "test/global-average-pooling-operator-tester.h",
1903 ] + OPERATOR_TEST_PARAMS_HDRS,
1904 deps = OPERATOR_TEST_DEPS,
1905)
1906
1907xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001908 name = "global_average_pooling_ncw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001909 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001910 "test/global-average-pooling-ncw.cc",
1911 "test/global-average-pooling-operator-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001912 ],
1913 deps = OPERATOR_TEST_DEPS,
1914)
1915
1916xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001917 name = "hardswish_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001918 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001919 "test/hardswish-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001920 "test/hardswish-operator-tester.h",
1921 ],
1922 deps = OPERATOR_TEST_DEPS,
1923)
1924
1925xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001926 name = "leaky_relu_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001927 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001928 "test/leaky-relu-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001929 "test/leaky-relu-operator-tester.h",
1930 ],
1931 deps = OPERATOR_TEST_DEPS,
1932)
1933
1934xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001935 name = "max_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001936 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001937 "test/max-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001938 "test/max-pooling-operator-tester.h",
1939 ] + OPERATOR_TEST_PARAMS_HDRS,
1940 deps = OPERATOR_TEST_DEPS,
1941)
1942
1943xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001944 name = "multiply_nd_test",
Marat Dukhanca2733c2019-11-15 23:21:17 -08001945 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001946 "test/multiply-nd.cc",
Marat Dukhanca2733c2019-11-15 23:21:17 -08001947 "test/multiply-operator-tester.h",
1948 ],
1949 deps = OPERATOR_TEST_DEPS,
1950)
1951
1952xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001953 name = "prelu_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001954 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001955 "test/prelu-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001956 "test/prelu-operator-tester.h",
1957 ] + OPERATOR_TEST_PARAMS_HDRS,
1958 deps = OPERATOR_TEST_DEPS,
1959)
1960
1961xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001962 name = "resize_bilinear_nhwc_test",
Marat Dukhan69722492019-11-11 19:55:50 -08001963 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001964 "test/resize-bilinear-nhwc.cc",
Marat Dukhan69722492019-11-11 19:55:50 -08001965 "test/resize-bilinear-operator-tester.h",
1966 ] + OPERATOR_TEST_PARAMS_HDRS,
1967 deps = OPERATOR_TEST_DEPS,
1968)
1969
1970xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001971 name = "sigmoid_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001972 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001973 "test/sigmoid-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001974 "test/sigmoid-operator-tester.h",
1975 ],
1976 deps = OPERATOR_TEST_DEPS,
1977)
1978
1979xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001980 name = "softargmax_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001981 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001982 "test/softargmax-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001983 "test/softargmax-operator-tester.h",
1984 ],
1985 deps = OPERATOR_TEST_DEPS,
1986)
1987
1988xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08001989 name = "unpooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001990 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08001991 "test/unpooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001992 "test/unpooling-operator-tester.h",
1993 ],
1994 deps = OPERATOR_TEST_DEPS,
1995)
1996
1997############################# Build configurations #############################
1998
Marat Dukhanb8642352019-10-30 15:43:02 -07001999# Enables usage of assembly kernels.
Marat Dukhan08c4a432019-10-03 09:29:21 -07002000config_setting(
Marat Dukhanb8642352019-10-30 15:43:02 -07002001 name = "xnn_enable_assembly_explicit_true",
2002 define_values = {"xnn_enable_assembly": "true"},
2003)
2004
2005# Disables usage of assembly kernels.
2006config_setting(
2007 name = "xnn_enable_assembly_explicit_false",
2008 define_values = {"xnn_enable_assembly": "false"},
2009)
2010
2011# Builds with -c dbg
2012config_setting(
2013 name = "debug_build",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002014 values = {
Marat Dukhanb8642352019-10-30 15:43:02 -07002015 "compilation_mode": "dbg",
2016 },
2017)
2018
2019# Builds with -c opt
2020config_setting(
2021 name = "optimized_build",
2022 values = {
2023 "compilation_mode": "opt",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002024 },
2025)
2026
2027config_setting(
Marat Dukhanb8642352019-10-30 15:43:02 -07002028 name = "linux_k8",
2029 values = {"cpu": "k8"},
2030)
2031
2032config_setting(
Marat Dukhan4e45e662019-10-03 15:40:24 -07002033 name = "linux_aarch64",
Marat Dukhanb8642352019-10-30 15:43:02 -07002034 values = {"cpu": "aarch64"},
Marat Dukhan4e45e662019-10-03 15:40:24 -07002035)
2036
2037config_setting(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002038 name = "android",
2039 values = {"crosstool_top": "//external:android/crosstool"},
2040)
2041
2042config_setting(
2043 name = "android_armv7",
2044 values = {
2045 "crosstool_top": "//external:android/crosstool",
2046 "cpu": "armeabi-v7a",
2047 },
2048)
2049
2050config_setting(
2051 name = "android_arm64",
2052 values = {
2053 "crosstool_top": "//external:android/crosstool",
2054 "cpu": "arm64-v8a",
2055 },
2056)
2057
2058config_setting(
2059 name = "android_x86",
2060 values = {
2061 "crosstool_top": "//external:android/crosstool",
2062 "cpu": "x86",
2063 },
2064)
2065
2066config_setting(
2067 name = "android_x86_64",
2068 values = {
2069 "crosstool_top": "//external:android/crosstool",
2070 "cpu": "x86_64",
2071 },
2072)
2073
2074config_setting(
Marat Dukhan885ca242019-10-07 09:17:32 -07002075 name = "macos_x86_64",
2076 values = {
2077 "apple_platform_type": "macos",
2078 "cpu": "darwin",
2079 },
2080)
2081
2082config_setting(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002083 name = "emscripten",
Marat Dukhan1a729ec2019-10-07 09:31:44 -07002084 values = {"crosstool_top": "//toolchain:emscripten"},
Marat Dukhan08c4a432019-10-03 09:29:21 -07002085)
2086
2087config_setting(
2088 name = "emscripten_wasm",
2089 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07002090 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002091 "cpu": "wasm",
2092 },
2093)
2094
2095config_setting(
2096 name = "emscripten_wasmsimd",
2097 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07002098 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002099 "cpu": "wasm",
Marat Dukhan8c19e3c2019-10-30 12:14:58 -07002100 "features": "wasm_simd",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002101 },
2102)
2103
2104config_setting(
2105 name = "emscripten_asmjs",
2106 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07002107 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002108 "cpu": "asmjs",
2109 },
2110)