blob: 767a2d72c90a0527185c4cf5df72532328546d24 [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 Dukhan10a38082020-04-17 03:58:35 -07009load(":build_defs.bzl", "xnnpack_aggregate_library", "xnnpack_benchmark", "xnnpack_binary", "xnnpack_cc_library", "xnnpack_gcc_std_copts", "xnnpack_min_size_copts", "xnnpack_msvc_std_copts", "xnnpack_optional_armcl_copts", "xnnpack_optional_armcl_deps", "xnnpack_optional_dnnl_copts", "xnnpack_optional_dnnl_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_cxxopts", "xnnpack_unit_test", "xnnpack_visibility")
Marat Dukhan69c3f2c2019-11-06 12:30:01 -080010
Marat Dukhan08c4a432019-10-03 09:29:21 -070011licenses(["notice"])
12
13exports_files(["LICENSE"])
14
Marat Dukhan1b354632020-03-23 12:50:22 -070015OPERATOR_BENCHMARK_DEPS = [
16 ":XNNPACK",
17 ":bench_utils",
18 "@cpuinfo",
19 "@pthreadpool",
20]
21
Marat Dukhan08c4a432019-10-03 09:29:21 -070022MICROKERNEL_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 = [
Marat Dukhan33fcf782020-05-24 14:27:15 -070039 ":ukernels_test_mode",
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
Marat Dukhan1b354632020-03-23 12:50:22 -070046OPERATOR_TEST_DEPS = [
Marat Dukhan33fcf782020-05-24 14:27:15 -070047 ":XNNPACK_test_mode",
Marat Dukhan1b354632020-03-23 12:50:22 -070048 "@pthreadpool",
49 "@FP16",
50]
51
Marat Dukhan08c4a432019-10-03 09:29:21 -070052OPERATOR_SRCS = [
Marat Dukhane8265432020-04-28 18:42:59 -070053 "src/operators/argmax-pooling-nhwc.c",
54 "src/operators/average-pooling-nhwc.c",
55 "src/operators/binary-elementwise-nd.c",
Marat Dukhane8265432020-04-28 18:42:59 -070056 "src/operators/channel-shuffle-nc.c",
Marat Dukhan065b11e2020-05-22 09:49:41 -070057 "src/operators/constant-pad-nd.c",
Marat Dukhane8265432020-04-28 18:42:59 -070058 "src/operators/convolution-nchw.c",
59 "src/operators/convolution-nhwc.c",
60 "src/operators/deconvolution-nhwc.c",
61 "src/operators/fully-connected-nc.c",
62 "src/operators/global-average-pooling-ncw.c",
63 "src/operators/global-average-pooling-nwc.c",
Marat Dukhane8265432020-04-28 18:42:59 -070064 "src/operators/leaky-relu-nc.c",
65 "src/operators/max-pooling-nhwc.c",
66 "src/operators/prelu-nc.c",
67 "src/operators/resize-bilinear-nhwc.c",
68 "src/operators/sigmoid-nc.c",
69 "src/operators/softmax-nc.c",
Marat Dukhanc3065f52020-06-04 13:33:32 -070070 "src/operators/unary-elementwise-nc.c",
Marat Dukhane8265432020-04-28 18:42:59 -070071 "src/operators/unpooling-nhwc.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -070072]
73
Marat Dukhan95e8b7a2020-06-03 12:46:26 -070074SUBGRAPH_SRCS = [
75 "src/subgraph/add2.c",
76 "src/subgraph/argmax-pooling-2d.c",
77 "src/subgraph/average-pooling-2d.c",
78 "src/subgraph/clamp.c",
79 "src/subgraph/convolution-2d.c",
80 "src/subgraph/deconvolution-2d.c",
81 "src/subgraph/depthwise-convolution-2d.c",
Marat Dukhan9d3a4592020-06-05 16:52:42 -070082 "src/subgraph/divide.c",
Marat Dukhan95e8b7a2020-06-03 12:46:26 -070083 "src/subgraph/fully-connected.c",
84 "src/subgraph/hardswish.c",
85 "src/subgraph/max-pooling-2d.c",
Marat Dukhan9d3a4592020-06-05 16:52:42 -070086 "src/subgraph/maximum2.c",
87 "src/subgraph/minimum2.c",
Marat Dukhan95e8b7a2020-06-03 12:46:26 -070088 "src/subgraph/multiply2.c",
89 "src/subgraph/prelu.c",
90 "src/subgraph/sigmoid.c",
91 "src/subgraph/softmax.c",
92 "src/subgraph/static-constant-pad.c",
Marat Dukhan9d3a4592020-06-05 16:52:42 -070093 "src/subgraph/squared-difference.c",
94 "src/subgraph/subtract.c",
Marat Dukhan95e8b7a2020-06-03 12:46:26 -070095 "src/subgraph/unpooling-2d.c",
96]
97
Marat Dukhan3a77ea72019-12-23 12:10:24 -080098TABLE_SRCS = [
99 "src/tables/exp2-k-over-64.c",
100 "src/tables/exp2-k-over-2048.c",
101]
102
Marat Dukhan08c4a432019-10-03 09:29:21 -0700103SCALAR_UKERNELS = [
Marat Dukhan329da642019-11-19 21:44:39 -0800104 "src/f32-argmaxpool/4x-scalar-c1.c",
Marat Dukhan1e782c42019-11-21 17:02:40 -0800105 "src/f32-argmaxpool/9p8x-scalar-c1.c",
Marat Dukhan329da642019-11-19 21:44:39 -0800106 "src/f32-argmaxpool/9x-scalar-c1.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700107 "src/f32-avgpool/9p8x-minmax-scalar-c1.c",
108 "src/f32-avgpool/9x-minmax-scalar-c1.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700109 "src/f32-clamp/gen/scalar-x1.c",
110 "src/f32-clamp/gen/scalar-x2.c",
111 "src/f32-clamp/gen/scalar-x4.c",
Marat Dukhan441e2212019-12-04 18:30:49 -0800112 "src/f32-conv-hwc/3x3s2p0p1c3x4-scalar-1x1.c",
Marat Dukhan6b7dfae2019-12-04 16:00:52 -0800113 "src/f32-conv-hwc/3x3s2p1c3x4-scalar-1x1.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -0700114 "src/f32-conv-hwc2chw/3x3s2p1c3x4-scalar-1x1.c",
115 "src/f32-dwconv-chw/3x3p1-scalar.c",
116 "src/f32-dwconv-chw/3x3s2p1-scalar.c",
117 "src/f32-dwconv-chw/5x5p2-scalar.c",
118 "src/f32-dwconv-chw/5x5s2p2-scalar.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700119 "src/f32-dwconv/gen/up1x4-scalar-acc2.c",
120 "src/f32-dwconv/gen/up1x4-scalar.c",
121 "src/f32-dwconv/gen/up1x9-scalar-acc2.c",
122 "src/f32-dwconv/gen/up1x9-scalar.c",
123 "src/f32-dwconv/gen/up1x25-scalar-acc2.c",
124 "src/f32-dwconv/gen/up1x25-scalar.c",
125 "src/f32-dwconv/gen/up2x4-scalar-acc2.c",
126 "src/f32-dwconv/gen/up2x4-scalar.c",
127 "src/f32-dwconv/gen/up2x9-scalar-acc2.c",
128 "src/f32-dwconv/gen/up2x9-scalar.c",
129 "src/f32-dwconv/gen/up2x25-scalar-acc2.c",
130 "src/f32-dwconv/gen/up2x25-scalar.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700131 "src/f32-dwconv/gen/up1x4-minmax-scalar-acc2.c",
132 "src/f32-dwconv/gen/up1x4-minmax-scalar.c",
133 "src/f32-dwconv/gen/up1x9-minmax-scalar-acc2.c",
134 "src/f32-dwconv/gen/up1x9-minmax-scalar.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700135 "src/f32-dwconv/gen/up1x25-minmax-scalar-acc2.c",
136 "src/f32-dwconv/gen/up1x25-minmax-scalar.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700137 "src/f32-dwconv/gen/up2x4-minmax-scalar-acc2.c",
138 "src/f32-dwconv/gen/up2x4-minmax-scalar.c",
139 "src/f32-dwconv/gen/up2x9-minmax-scalar-acc2.c",
140 "src/f32-dwconv/gen/up2x9-minmax-scalar.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700141 "src/f32-dwconv/gen/up2x25-minmax-scalar-acc2.c",
142 "src/f32-dwconv/gen/up2x25-minmax-scalar.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -0700143 "src/f32-gavgpool-cw/scalar-x1.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700144 "src/f32-gavgpool/7p7x-minmax-scalar-c1.c",
145 "src/f32-gavgpool/7x-minmax-scalar-c1.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700146 "src/f32-gemm/gen-inc/1x4inc-minmax-scalar.c",
147 "src/f32-gemm/gen-inc/2x4inc-minmax-scalar.c",
148 "src/f32-gemm/gen-inc/4x4inc-minmax-scalar.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700149 "src/f32-gemm/gen/1x4-scalar.c",
150 "src/f32-gemm/gen/2x4-scalar.c",
151 "src/f32-gemm/gen/4x2-scalar.c",
152 "src/f32-gemm/gen/4x4-scalar.c",
Marat Dukhan467f6362020-05-22 23:21:55 -0700153 "src/f32-gemm/gen/1x4-relu-scalar.c",
154 "src/f32-gemm/gen/2x4-relu-scalar.c",
155 "src/f32-gemm/gen/4x2-relu-scalar.c",
156 "src/f32-gemm/gen/4x4-relu-scalar.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700157 "src/f32-gemm/gen/1x4-minmax-scalar.c",
158 "src/f32-gemm/gen/2x4-minmax-scalar.c",
159 "src/f32-gemm/gen/4x2-minmax-scalar.c",
160 "src/f32-gemm/gen/4x4-minmax-scalar.c",
Marat Dukhan662faa02019-12-09 22:48:16 -0800161 "src/f32-hswish/gen/scalar-x1.c",
162 "src/f32-hswish/gen/scalar-x2.c",
163 "src/f32-hswish/gen/scalar-x4.c",
Marat Dukhan660fd192020-03-10 04:55:30 -0700164 "src/f32-ibilinear/gen/scalar-c1.c",
165 "src/f32-ibilinear/gen/scalar-c2.c",
166 "src/f32-ibilinear/gen/scalar-c4.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700167 "src/f32-igemm/gen/1x4-scalar.c",
168 "src/f32-igemm/gen/2x4-scalar.c",
169 "src/f32-igemm/gen/4x2-scalar.c",
170 "src/f32-igemm/gen/4x4-scalar.c",
Marat Dukhan467f6362020-05-22 23:21:55 -0700171 "src/f32-igemm/gen/1x4-relu-scalar.c",
172 "src/f32-igemm/gen/2x4-relu-scalar.c",
173 "src/f32-igemm/gen/4x2-relu-scalar.c",
174 "src/f32-igemm/gen/4x4-relu-scalar.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700175 "src/f32-igemm/gen/1x4-minmax-scalar.c",
176 "src/f32-igemm/gen/2x4-minmax-scalar.c",
177 "src/f32-igemm/gen/4x2-minmax-scalar.c",
178 "src/f32-igemm/gen/4x4-minmax-scalar.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700179 "src/f32-maxpool/9p8x-minmax-scalar-c1.c",
180 "src/f32-pavgpool/9p8x-minmax-scalar-c1.c",
181 "src/f32-pavgpool/9x-minmax-scalar-c1.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700182 "src/f32-ppmm/gen/2x4-minmax-scalar.c",
183 "src/f32-ppmm/gen/3x3-minmax-scalar.c",
184 "src/f32-ppmm/gen/4x2-minmax-scalar.c",
185 "src/f32-ppmm/gen/4x4-minmax-scalar.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -0800186 "src/f32-prelu/gen/scalar-2x1.c",
187 "src/f32-prelu/gen/scalar-2x4.c",
Marat Dukhanf46f6752020-01-21 11:03:49 -0800188 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x1.c",
189 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x2.c",
190 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x2-acc2.c",
191 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x4.c",
192 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x4-acc2.c",
193 "src/f32-raddstoreexpminusmax/gen/scalar-lut64-p2-x4-acc4.c",
194 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x1.c",
195 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x2.c",
196 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x2-acc2.c",
197 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x4.c",
198 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x4-acc2.c",
199 "src/f32-raddstoreexpminusmax/gen/scalar-p5-x4-acc4.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700200 "src/f32-rmax/scalar.c",
Marat Dukhan3a77ea72019-12-23 12:10:24 -0800201 "src/f32-sigmoid/gen/scalar-lut2048-p1-div-x1.c",
202 "src/f32-sigmoid/gen/scalar-lut2048-p1-div-x2.c",
203 "src/f32-sigmoid/gen/scalar-lut2048-p1-div-x4.c",
204 "src/f32-sigmoid/gen/scalar-lut64-p2-div-x1.c",
205 "src/f32-sigmoid/gen/scalar-lut64-p2-div-x2.c",
206 "src/f32-sigmoid/gen/scalar-lut64-p2-div-x4.c",
207 "src/f32-sigmoid/gen/scalar-p5-div-x1.c",
208 "src/f32-sigmoid/gen/scalar-p5-div-x2.c",
209 "src/f32-sigmoid/gen/scalar-p5-div-x4.c",
Marat Dukhan355ab432020-04-09 19:01:52 -0700210 "src/f32-spmm/gen/1x1-minmax-scalar-pipelined.c",
211 "src/f32-spmm/gen/1x1-minmax-scalar.c",
212 "src/f32-spmm/gen/2x1-minmax-scalar-pipelined.c",
213 "src/f32-spmm/gen/2x1-minmax-scalar.c",
214 "src/f32-spmm/gen/4x1-minmax-scalar-pipelined.c",
215 "src/f32-spmm/gen/4x1-minmax-scalar.c",
216 "src/f32-spmm/gen/8x1-minmax-scalar-pipelined.c",
217 "src/f32-spmm/gen/8x1-minmax-scalar.c",
218 "src/f32-spmm/gen/8x2-minmax-scalar.c",
219 "src/f32-spmm/gen/8x4-minmax-scalar.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700220 "src/f32-vbinary/gen/vadd-minmax-scalar-x1.c",
221 "src/f32-vbinary/gen/vadd-minmax-scalar-x2.c",
222 "src/f32-vbinary/gen/vadd-minmax-scalar-x4.c",
223 "src/f32-vbinary/gen/vaddc-minmax-scalar-x1.c",
224 "src/f32-vbinary/gen/vaddc-minmax-scalar-x2.c",
225 "src/f32-vbinary/gen/vaddc-minmax-scalar-x4.c",
226 "src/f32-vbinary/gen/vdiv-minmax-scalar-x1.c",
227 "src/f32-vbinary/gen/vdiv-minmax-scalar-x2.c",
228 "src/f32-vbinary/gen/vdiv-minmax-scalar-x4.c",
229 "src/f32-vbinary/gen/vdivc-minmax-scalar-x1.c",
230 "src/f32-vbinary/gen/vdivc-minmax-scalar-x2.c",
231 "src/f32-vbinary/gen/vdivc-minmax-scalar-x4.c",
Marat Dukhan403b7d42019-12-05 12:49:11 -0800232 "src/f32-vbinary/gen/vmax-scalar-x1.c",
233 "src/f32-vbinary/gen/vmax-scalar-x2.c",
234 "src/f32-vbinary/gen/vmax-scalar-x4.c",
235 "src/f32-vbinary/gen/vmaxc-scalar-x1.c",
236 "src/f32-vbinary/gen/vmaxc-scalar-x2.c",
237 "src/f32-vbinary/gen/vmaxc-scalar-x4.c",
238 "src/f32-vbinary/gen/vmin-scalar-x1.c",
239 "src/f32-vbinary/gen/vmin-scalar-x2.c",
240 "src/f32-vbinary/gen/vmin-scalar-x4.c",
241 "src/f32-vbinary/gen/vminc-scalar-x1.c",
242 "src/f32-vbinary/gen/vminc-scalar-x2.c",
243 "src/f32-vbinary/gen/vminc-scalar-x4.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700244 "src/f32-vbinary/gen/vmul-minmax-scalar-x1.c",
245 "src/f32-vbinary/gen/vmul-minmax-scalar-x2.c",
246 "src/f32-vbinary/gen/vmul-minmax-scalar-x4.c",
247 "src/f32-vbinary/gen/vmulc-minmax-scalar-x1.c",
248 "src/f32-vbinary/gen/vmulc-minmax-scalar-x2.c",
249 "src/f32-vbinary/gen/vmulc-minmax-scalar-x4.c",
250 "src/f32-vbinary/gen/vrdivc-minmax-scalar-x1.c",
251 "src/f32-vbinary/gen/vrdivc-minmax-scalar-x2.c",
252 "src/f32-vbinary/gen/vrdivc-minmax-scalar-x4.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700253 "src/f32-vbinary/gen/vrsqrdiffc-scalar-x1.c",
254 "src/f32-vbinary/gen/vrsqrdiffc-scalar-x2.c",
255 "src/f32-vbinary/gen/vrsqrdiffc-scalar-x4.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700256 "src/f32-vbinary/gen/vrsubc-minmax-scalar-x1.c",
257 "src/f32-vbinary/gen/vrsubc-minmax-scalar-x2.c",
258 "src/f32-vbinary/gen/vrsubc-minmax-scalar-x4.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700259 "src/f32-vbinary/gen/vsqrdiff-scalar-x1.c",
260 "src/f32-vbinary/gen/vsqrdiff-scalar-x2.c",
261 "src/f32-vbinary/gen/vsqrdiff-scalar-x4.c",
262 "src/f32-vbinary/gen/vsqrdiffc-scalar-x1.c",
263 "src/f32-vbinary/gen/vsqrdiffc-scalar-x2.c",
264 "src/f32-vbinary/gen/vsqrdiffc-scalar-x4.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700265 "src/f32-vbinary/gen/vsub-minmax-scalar-x1.c",
266 "src/f32-vbinary/gen/vsub-minmax-scalar-x2.c",
267 "src/f32-vbinary/gen/vsub-minmax-scalar-x4.c",
268 "src/f32-vbinary/gen/vsubc-minmax-scalar-x1.c",
269 "src/f32-vbinary/gen/vsubc-minmax-scalar-x2.c",
270 "src/f32-vbinary/gen/vsubc-minmax-scalar-x4.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700271 "src/f32-vmulcaddc/gen/c1-minmax-scalar-2x.c",
272 "src/f32-vmulcaddc/gen/c2-minmax-scalar-2x.c",
273 "src/f32-vmulcaddc/gen/c4-minmax-scalar-2x.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700274 "src/f32-vrnd/gen/vrndne-scalar-libm-x1.c",
275 "src/f32-vrnd/gen/vrndne-scalar-libm-x2.c",
276 "src/f32-vrnd/gen/vrndne-scalar-libm-x4.c",
277 "src/f32-vrnd/gen/vrndz-scalar-libm-x1.c",
278 "src/f32-vrnd/gen/vrndz-scalar-libm-x2.c",
279 "src/f32-vrnd/gen/vrndz-scalar-libm-x4.c",
280 "src/f32-vrnd/gen/vrndu-scalar-libm-x1.c",
281 "src/f32-vrnd/gen/vrndu-scalar-libm-x2.c",
282 "src/f32-vrnd/gen/vrndu-scalar-libm-x4.c",
283 "src/f32-vrnd/gen/vrndd-scalar-libm-x1.c",
284 "src/f32-vrnd/gen/vrndd-scalar-libm-x2.c",
285 "src/f32-vrnd/gen/vrndd-scalar-libm-x4.c",
Marat Dukhan5020b962020-06-08 13:30:10 -0700286 "src/f32-vunary/gen/vabs-scalar-x1.c",
287 "src/f32-vunary/gen/vabs-scalar-x2.c",
288 "src/f32-vunary/gen/vabs-scalar-x4.c",
289 "src/f32-vunary/gen/vneg-scalar-x1.c",
290 "src/f32-vunary/gen/vneg-scalar-x2.c",
291 "src/f32-vunary/gen/vneg-scalar-x4.c",
292 "src/f32-vunary/gen/vsqr-scalar-x1.c",
293 "src/f32-vunary/gen/vsqr-scalar-x2.c",
294 "src/f32-vunary/gen/vsqr-scalar-x4.c",
Marat Dukhan5739f702019-12-22 19:45:09 -0800295 "src/math/expminus-scalar-lut2048-p1.c",
296 "src/math/expminus-scalar-lut64-p2.c",
297 "src/math/expminus-scalar-p5.c",
Marat Dukhan075088a2020-05-12 19:42:12 -0700298 "src/math/roundne-scalar-addsub.c",
Marat Dukhanffbf96a2020-05-14 02:59:08 -0700299 "src/math/roundne-scalar-nearbyint.c",
300 "src/math/roundne-scalar-rint.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -0700301 "src/math/roundd-scalar-addsub.c",
302 "src/math/roundd-scalar-cvt.c",
Marat Dukhanffbf96a2020-05-14 02:59:08 -0700303 "src/math/roundd-scalar-floor.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -0700304 "src/math/roundu-scalar-addsub.c",
Marat Dukhanffbf96a2020-05-14 02:59:08 -0700305 "src/math/roundu-scalar-ceil.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -0700306 "src/math/roundu-scalar-cvt.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -0700307 "src/math/roundz-scalar-addsub.c",
308 "src/math/roundz-scalar-cvt.c",
Marat Dukhanffbf96a2020-05-14 02:59:08 -0700309 "src/math/roundz-scalar-trunc.c",
Marat Dukhan5739f702019-12-22 19:45:09 -0800310 "src/math/sigmoid-scalar-lut2048-p1-div.c",
311 "src/math/sigmoid-scalar-lut64-p2-div.c",
312 "src/math/sigmoid-scalar-p5-div.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700313 "src/q8-avgpool/9p8x-minmax-scalar-c1.c",
314 "src/q8-avgpool/9x-minmax-scalar-c1.c",
Marat Dukhande06f492020-04-09 00:19:31 -0700315 "src/q8-dwconv/up1x9-minmax-scalar.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700316 "src/q8-gavgpool/7p7x-minmax-scalar-c1.c",
317 "src/q8-gavgpool/7x-minmax-scalar-c1.c",
Marat Dukhande06f492020-04-09 00:19:31 -0700318 "src/q8-gemm/2x2-minmax-scalar.c",
319 "src/q8-igemm/2x2-minmax-scalar.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700320 "src/q8-vadd/minmax-scalar.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700321 "src/u8-clamp/scalar-x4.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700322 "src/u8-lut32norm/scalar.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700323 "src/u8-maxpool/9p8x-minmax-scalar-c1.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700324 "src/u8-rmax/scalar.c",
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -0700325 "src/x32-fill/scalar-float.c",
326 "src/x32-fill/scalar-int.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700327 "src/x32-packx/x2-scalar.c",
328 "src/x32-packx/x3-scalar.c",
329 "src/x32-packx/x4-scalar.c",
Marat Dukhan63523d42020-05-22 17:07:33 -0700330 "src/x32-pad/scalar-int.c",
331 "src/x32-pad/scalar-float.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700332 "src/x32-unpool/scalar.c",
333 "src/x32-zip/x2-scalar.c",
334 "src/x32-zip/x3-scalar.c",
335 "src/x32-zip/x4-scalar.c",
336 "src/x32-zip/xm-scalar.c",
337 "src/x8-lut/scalar.c",
338 "src/x8-zip/x2-scalar.c",
339 "src/x8-zip/x3-scalar.c",
340 "src/x8-zip/x4-scalar.c",
341 "src/x8-zip/xm-scalar.c",
Marat Dukhanfe7acb62020-03-09 19:30:05 -0700342 "src/requantization/precise-scalar.c",
343 "src/requantization/fp32-scalar.c",
344 "src/requantization/q31-scalar.c",
345 "src/requantization/gemmlowp-scalar.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700346]
347
Marat Dukhan436ebe62019-12-04 15:10:12 -0800348WASM_UKERNELS = [
Marat Dukhan99936602020-04-11 16:47:01 -0700349 "src/f32-avgpool/9p8x-minmax-wasm-c1.c",
350 "src/f32-avgpool/9x-minmax-wasm-c1.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700351 "src/f32-clamp/gen/wasm-x1.c",
352 "src/f32-clamp/gen/wasm-x2.c",
353 "src/f32-clamp/gen/wasm-x4.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700354 "src/f32-dwconv/gen/up1x4-wasm-acc2.c",
355 "src/f32-dwconv/gen/up1x4-wasm.c",
356 "src/f32-dwconv/gen/up1x9-wasm-acc2.c",
357 "src/f32-dwconv/gen/up1x9-wasm.c",
358 "src/f32-dwconv/gen/up1x25-wasm-acc2.c",
359 "src/f32-dwconv/gen/up1x25-wasm.c",
360 "src/f32-dwconv/gen/up2x4-wasm-acc2.c",
361 "src/f32-dwconv/gen/up2x4-wasm.c",
362 "src/f32-dwconv/gen/up2x9-wasm-acc2.c",
363 "src/f32-dwconv/gen/up2x9-wasm.c",
364 "src/f32-dwconv/gen/up2x25-wasm-acc2.c",
365 "src/f32-dwconv/gen/up2x25-wasm.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700366 "src/f32-dwconv/gen/up1x4-minmax-wasm-acc2.c",
367 "src/f32-dwconv/gen/up1x4-minmax-wasm.c",
368 "src/f32-dwconv/gen/up1x9-minmax-wasm-acc2.c",
369 "src/f32-dwconv/gen/up1x9-minmax-wasm.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700370 "src/f32-dwconv/gen/up1x25-minmax-wasm-acc2.c",
371 "src/f32-dwconv/gen/up1x25-minmax-wasm.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700372 "src/f32-dwconv/gen/up2x4-minmax-wasm-acc2.c",
373 "src/f32-dwconv/gen/up2x4-minmax-wasm.c",
374 "src/f32-dwconv/gen/up2x9-minmax-wasm-acc2.c",
375 "src/f32-dwconv/gen/up2x9-minmax-wasm.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700376 "src/f32-dwconv/gen/up2x25-minmax-wasm-acc2.c",
377 "src/f32-dwconv/gen/up2x25-minmax-wasm.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700378 "src/f32-gavgpool/7p7x-minmax-wasm-c1.c",
379 "src/f32-gavgpool/7x-minmax-wasm-c1.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700380 "src/f32-gemm/gen-inc/1x4inc-minmax-wasm.c",
381 "src/f32-gemm/gen-inc/2x4inc-minmax-wasm.c",
382 "src/f32-gemm/gen-inc/4x4inc-minmax-wasm.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700383 "src/f32-gemm/gen/1x4-wasm.c",
384 "src/f32-gemm/gen/2x4-wasm.c",
385 "src/f32-gemm/gen/4x2-wasm.c",
386 "src/f32-gemm/gen/4x4-wasm.c",
Marat Dukhan467f6362020-05-22 23:21:55 -0700387 "src/f32-gemm/gen/1x4-relu-wasm.c",
388 "src/f32-gemm/gen/2x4-relu-wasm.c",
389 "src/f32-gemm/gen/4x2-relu-wasm.c",
390 "src/f32-gemm/gen/4x4-relu-wasm.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700391 "src/f32-gemm/gen/1x4-minmax-wasm.c",
392 "src/f32-gemm/gen/2x4-minmax-wasm.c",
393 "src/f32-gemm/gen/4x2-minmax-wasm.c",
394 "src/f32-gemm/gen/4x4-minmax-wasm.c",
Marat Dukhan662faa02019-12-09 22:48:16 -0800395 "src/f32-hswish/gen/wasm-x1.c",
396 "src/f32-hswish/gen/wasm-x2.c",
397 "src/f32-hswish/gen/wasm-x4.c",
Marat Dukhan163a7e62020-04-09 04:19:26 -0700398 "src/f32-igemm/gen/1x4-wasm.c",
399 "src/f32-igemm/gen/2x4-wasm.c",
400 "src/f32-igemm/gen/4x2-wasm.c",
401 "src/f32-igemm/gen/4x4-wasm.c",
Marat Dukhan467f6362020-05-22 23:21:55 -0700402 "src/f32-igemm/gen/1x4-relu-wasm.c",
403 "src/f32-igemm/gen/2x4-relu-wasm.c",
404 "src/f32-igemm/gen/4x2-relu-wasm.c",
405 "src/f32-igemm/gen/4x4-relu-wasm.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700406 "src/f32-igemm/gen/1x4-minmax-wasm.c",
407 "src/f32-igemm/gen/2x4-minmax-wasm.c",
408 "src/f32-igemm/gen/4x2-minmax-wasm.c",
409 "src/f32-igemm/gen/4x4-minmax-wasm.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700410 "src/f32-maxpool/9p8x-minmax-wasm-c1.c",
411 "src/f32-pavgpool/9p8x-minmax-wasm-c1.c",
412 "src/f32-pavgpool/9x-minmax-wasm-c1.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700413 "src/f32-vbinary/gen/vadd-minmax-wasm-x1.c",
414 "src/f32-vbinary/gen/vadd-minmax-wasm-x2.c",
415 "src/f32-vbinary/gen/vadd-minmax-wasm-x4.c",
416 "src/f32-vbinary/gen/vaddc-minmax-wasm-x1.c",
417 "src/f32-vbinary/gen/vaddc-minmax-wasm-x2.c",
418 "src/f32-vbinary/gen/vaddc-minmax-wasm-x4.c",
419 "src/f32-vbinary/gen/vdiv-minmax-wasm-x1.c",
420 "src/f32-vbinary/gen/vdiv-minmax-wasm-x2.c",
421 "src/f32-vbinary/gen/vdiv-minmax-wasm-x4.c",
422 "src/f32-vbinary/gen/vdivc-minmax-wasm-x1.c",
423 "src/f32-vbinary/gen/vdivc-minmax-wasm-x2.c",
424 "src/f32-vbinary/gen/vdivc-minmax-wasm-x4.c",
Marat Dukhan403b7d42019-12-05 12:49:11 -0800425 "src/f32-vbinary/gen/vmax-wasm-x1.c",
426 "src/f32-vbinary/gen/vmax-wasm-x2.c",
427 "src/f32-vbinary/gen/vmax-wasm-x4.c",
428 "src/f32-vbinary/gen/vmaxc-wasm-x1.c",
429 "src/f32-vbinary/gen/vmaxc-wasm-x2.c",
430 "src/f32-vbinary/gen/vmaxc-wasm-x4.c",
431 "src/f32-vbinary/gen/vmin-wasm-x1.c",
432 "src/f32-vbinary/gen/vmin-wasm-x2.c",
433 "src/f32-vbinary/gen/vmin-wasm-x4.c",
434 "src/f32-vbinary/gen/vminc-wasm-x1.c",
435 "src/f32-vbinary/gen/vminc-wasm-x2.c",
436 "src/f32-vbinary/gen/vminc-wasm-x4.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700437 "src/f32-vbinary/gen/vmul-minmax-wasm-x1.c",
438 "src/f32-vbinary/gen/vmul-minmax-wasm-x2.c",
439 "src/f32-vbinary/gen/vmul-minmax-wasm-x4.c",
440 "src/f32-vbinary/gen/vmulc-minmax-wasm-x1.c",
441 "src/f32-vbinary/gen/vmulc-minmax-wasm-x2.c",
442 "src/f32-vbinary/gen/vmulc-minmax-wasm-x4.c",
443 "src/f32-vbinary/gen/vrdivc-minmax-wasm-x1.c",
444 "src/f32-vbinary/gen/vrdivc-minmax-wasm-x2.c",
445 "src/f32-vbinary/gen/vrdivc-minmax-wasm-x4.c",
446 "src/f32-vbinary/gen/vrsubc-minmax-wasm-x1.c",
447 "src/f32-vbinary/gen/vrsubc-minmax-wasm-x2.c",
448 "src/f32-vbinary/gen/vrsubc-minmax-wasm-x4.c",
449 "src/f32-vbinary/gen/vsub-minmax-wasm-x1.c",
450 "src/f32-vbinary/gen/vsub-minmax-wasm-x2.c",
451 "src/f32-vbinary/gen/vsub-minmax-wasm-x4.c",
452 "src/f32-vbinary/gen/vsubc-minmax-wasm-x1.c",
453 "src/f32-vbinary/gen/vsubc-minmax-wasm-x2.c",
454 "src/f32-vbinary/gen/vsubc-minmax-wasm-x4.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700455 "src/f32-vmulcaddc/gen/c1-minmax-wasm-2x.c",
456 "src/f32-vmulcaddc/gen/c2-minmax-wasm-2x.c",
457 "src/f32-vmulcaddc/gen/c4-minmax-wasm-2x.c",
Marat Dukhan436ebe62019-12-04 15:10:12 -0800458]
459
Marat Dukhan290055c2020-06-09 12:24:29 -0700460WASMSIMD_UKERNELS = [
461 "src/requantization/fp32-wasmsimd.c",
462]
463
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800464PSIMD_FASTMATH_UKERNELS = [
Marat Dukhan329da642019-11-19 21:44:39 -0800465 "src/f32-argmaxpool/4x-psimd-c4.c",
Marat Dukhan1e782c42019-11-21 17:02:40 -0800466 "src/f32-argmaxpool/9p8x-psimd-c4.c",
Marat Dukhan329da642019-11-19 21:44:39 -0800467 "src/f32-argmaxpool/9x-psimd-c4.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700468 "src/f32-avgpool/9p8x-minmax-psimd-c4.c",
469 "src/f32-avgpool/9x-minmax-psimd-c4.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700470 "src/f32-clamp/gen/psimd-x4.c",
471 "src/f32-clamp/gen/psimd-x8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700472 "src/f32-dwconv/gen/up4x25-minmax-psimd-acc2.c",
473 "src/f32-dwconv/gen/up4x25-minmax-psimd.c",
474 "src/f32-dwconv/gen/up4x4-minmax-psimd-acc2.c",
475 "src/f32-dwconv/gen/up4x4-minmax-psimd.c",
476 "src/f32-dwconv/gen/up4x9-minmax-psimd-acc2.c",
477 "src/f32-dwconv/gen/up4x9-minmax-psimd.c",
478 "src/f32-dwconv/gen/up8x25-minmax-psimd-acc2.c",
479 "src/f32-dwconv/gen/up8x25-minmax-psimd.c",
480 "src/f32-dwconv/gen/up8x4-minmax-psimd-acc2.c",
481 "src/f32-dwconv/gen/up8x4-minmax-psimd.c",
482 "src/f32-dwconv/gen/up8x9-minmax-psimd-acc2.c",
483 "src/f32-dwconv/gen/up8x9-minmax-psimd.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700484 "src/f32-gavgpool/7p7x-minmax-psimd-c4.c",
485 "src/f32-gavgpool/7x-minmax-psimd-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700486 "src/f32-gemm/gen/1x8-minmax-psimd-loadsplat.c",
487 "src/f32-gemm/gen/1x8-minmax-psimd-splat.c",
488 "src/f32-gemm/gen/1x8s4-minmax-psimd.c",
489 "src/f32-gemm/gen/4x2c4-minmax-psimd.c",
490 "src/f32-gemm/gen/4x8-minmax-psimd-loadsplat.c",
491 "src/f32-gemm/gen/4x8-minmax-psimd-splat.c",
492 "src/f32-gemm/gen/4x8s4-minmax-psimd.c",
493 "src/f32-gemm/gen/6x8-minmax-psimd-loadsplat.c",
494 "src/f32-gemm/gen/6x8-minmax-psimd-splat.c",
495 "src/f32-gemm/gen/6x8s4-minmax-psimd.c",
496 "src/f32-gemm/gen-inc/1x8inc-minmax-psimd-loadsplat.c",
497 "src/f32-gemm/gen-inc/1x8inc-minmax-psimd-splat.c",
498 "src/f32-gemm/gen-inc/1x8s4inc-minmax-psimd.c",
499 "src/f32-gemm/gen-inc/4x8inc-minmax-psimd-loadsplat.c",
500 "src/f32-gemm/gen-inc/4x8inc-minmax-psimd-splat.c",
501 "src/f32-gemm/gen-inc/4x8s4inc-minmax-psimd.c",
502 "src/f32-gemm/gen-inc/6x8inc-minmax-psimd-loadsplat.c",
503 "src/f32-gemm/gen-inc/6x8inc-minmax-psimd-splat.c",
504 "src/f32-gemm/gen-inc/6x8s4inc-minmax-psimd.c",
Marat Dukhan662faa02019-12-09 22:48:16 -0800505 "src/f32-hswish/gen/psimd-x4.c",
506 "src/f32-hswish/gen/psimd-x8.c",
Marat Dukhan660fd192020-03-10 04:55:30 -0700507 "src/f32-ibilinear/gen/psimd-c4.c",
508 "src/f32-ibilinear/gen/psimd-c8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700509 "src/f32-igemm/gen/1x8-minmax-psimd-loadsplat.c",
510 "src/f32-igemm/gen/1x8-minmax-psimd-splat.c",
511 "src/f32-igemm/gen/1x8s4-minmax-psimd.c",
512 "src/f32-igemm/gen/4x2c4-minmax-psimd.c",
513 "src/f32-igemm/gen/4x8-minmax-psimd-loadsplat.c",
514 "src/f32-igemm/gen/4x8-minmax-psimd-splat.c",
515 "src/f32-igemm/gen/4x8s4-minmax-psimd.c",
516 "src/f32-igemm/gen/6x8-minmax-psimd-loadsplat.c",
517 "src/f32-igemm/gen/6x8-minmax-psimd-splat.c",
518 "src/f32-igemm/gen/6x8s4-minmax-psimd.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700519 "src/f32-maxpool/9p8x-minmax-psimd-c4.c",
520 "src/f32-pavgpool/9p8x-minmax-psimd-c4.c",
521 "src/f32-pavgpool/9x-minmax-psimd-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700522 "src/f32-ppmm/gen/4x8-minmax-psimd.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -0800523 "src/f32-prelu/gen/psimd-2x4.c",
524 "src/f32-prelu/gen/psimd-2x8.c",
Marat Dukhanb39689d2020-01-24 13:32:20 -0800525 "src/f32-rmax/psimd.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700526 "src/f32-vbinary/gen/vadd-minmax-psimd-x4.c",
527 "src/f32-vbinary/gen/vadd-minmax-psimd-x8.c",
528 "src/f32-vbinary/gen/vaddc-minmax-psimd-x4.c",
529 "src/f32-vbinary/gen/vaddc-minmax-psimd-x8.c",
530 "src/f32-vbinary/gen/vdiv-minmax-psimd-x4.c",
531 "src/f32-vbinary/gen/vdiv-minmax-psimd-x8.c",
532 "src/f32-vbinary/gen/vdivc-minmax-psimd-x4.c",
533 "src/f32-vbinary/gen/vdivc-minmax-psimd-x8.c",
Marat Dukhan403b7d42019-12-05 12:49:11 -0800534 "src/f32-vbinary/gen/vmax-psimd-x4.c",
535 "src/f32-vbinary/gen/vmax-psimd-x8.c",
536 "src/f32-vbinary/gen/vmaxc-psimd-x4.c",
537 "src/f32-vbinary/gen/vmaxc-psimd-x8.c",
538 "src/f32-vbinary/gen/vmin-psimd-x4.c",
539 "src/f32-vbinary/gen/vmin-psimd-x8.c",
540 "src/f32-vbinary/gen/vminc-psimd-x4.c",
541 "src/f32-vbinary/gen/vminc-psimd-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700542 "src/f32-vbinary/gen/vmul-minmax-psimd-x4.c",
543 "src/f32-vbinary/gen/vmul-minmax-psimd-x8.c",
544 "src/f32-vbinary/gen/vmulc-minmax-psimd-x4.c",
545 "src/f32-vbinary/gen/vmulc-minmax-psimd-x8.c",
546 "src/f32-vbinary/gen/vrdivc-minmax-psimd-x4.c",
547 "src/f32-vbinary/gen/vrdivc-minmax-psimd-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700548 "src/f32-vbinary/gen/vrsqrdiffc-psimd-x4.c",
549 "src/f32-vbinary/gen/vrsqrdiffc-psimd-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700550 "src/f32-vbinary/gen/vrsubc-minmax-psimd-x4.c",
551 "src/f32-vbinary/gen/vrsubc-minmax-psimd-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700552 "src/f32-vbinary/gen/vsqrdiff-psimd-x4.c",
553 "src/f32-vbinary/gen/vsqrdiff-psimd-x8.c",
554 "src/f32-vbinary/gen/vsqrdiffc-psimd-x4.c",
555 "src/f32-vbinary/gen/vsqrdiffc-psimd-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700556 "src/f32-vbinary/gen/vsub-minmax-psimd-x4.c",
557 "src/f32-vbinary/gen/vsub-minmax-psimd-x8.c",
558 "src/f32-vbinary/gen/vsubc-minmax-psimd-x4.c",
559 "src/f32-vbinary/gen/vsubc-minmax-psimd-x8.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700560 "src/f32-vmulcaddc/gen/c4-minmax-psimd-2x.c",
561 "src/f32-vmulcaddc/gen/c8-minmax-psimd-2x.c",
Marat Dukhan5020b962020-06-08 13:30:10 -0700562 "src/f32-vunary/gen/vabs-psimd-x4.c",
563 "src/f32-vunary/gen/vabs-psimd-x8.c",
564 "src/f32-vunary/gen/vneg-psimd-x4.c",
565 "src/f32-vunary/gen/vneg-psimd-x8.c",
566 "src/f32-vunary/gen/vsqr-psimd-x4.c",
567 "src/f32-vunary/gen/vsqr-psimd-x8.c",
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -0700568 "src/x32-fill/psimd.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700569 "src/x32-packx/x4-psimd.c",
Marat Dukhan63523d42020-05-22 17:07:33 -0700570 "src/x32-pad/psimd.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700571 "src/x32-unpool/psimd.c",
572 "src/x32-zip/x2-psimd.c",
573 "src/x32-zip/x3-psimd.c",
574 "src/x32-zip/x4-psimd.c",
575 "src/x32-zip/xm-psimd.c",
Marat Dukhanfe7acb62020-03-09 19:30:05 -0700576 "src/requantization/precise-psimd.c",
577 "src/requantization/fp32-psimd.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700578]
579
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800580PSIMD_ACCMATH_UKERNELS = [
Marat Dukhanb39689d2020-01-24 13:32:20 -0800581 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x4.c",
582 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x8.c",
583 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x8-acc2.c",
584 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x12.c",
585 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x12-acc2.c",
586 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x12-acc3.c",
587 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x16.c",
588 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x16-acc2.c",
589 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x16-acc4.c",
590 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x20.c",
591 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x20-acc2.c",
592 "src/f32-raddstoreexpminusmax/gen/psimd-p5-x20-acc5.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800593 "src/f32-sigmoid/gen/psimd-p5-div-x4.c",
594 "src/f32-sigmoid/gen/psimd-p5-div-x8.c",
595 "src/f32-sigmoid/gen/psimd-p5-div-x12.c",
596 "src/f32-sigmoid/gen/psimd-p5-div-x16.c",
597 "src/f32-sigmoid/gen/psimd-p5-div-x20.c",
598 "src/f32-sigmoid/gen/psimd-p5-div-x24.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700599 "src/f32-vrnd/gen/vrndne-psimd-x4.c",
600 "src/f32-vrnd/gen/vrndne-psimd-x8.c",
601 "src/f32-vrnd/gen/vrndz-psimd-x4.c",
602 "src/f32-vrnd/gen/vrndz-psimd-x8.c",
603 "src/f32-vrnd/gen/vrndu-psimd-x4.c",
604 "src/f32-vrnd/gen/vrndu-psimd-x8.c",
605 "src/f32-vrnd/gen/vrndd-psimd-x4.c",
606 "src/f32-vrnd/gen/vrndd-psimd-x8.c",
Marat Dukhan075088a2020-05-12 19:42:12 -0700607 "src/math/roundne-psimd-addsub.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -0700608 "src/math/roundd-psimd-addsub.c",
609 "src/math/roundu-psimd-addsub.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -0700610 "src/math/roundz-psimd-addsub.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -0800611 "src/math/sigmoid-psimd-p5-div.c",
612]
613
Marat Dukhan08c4a432019-10-03 09:29:21 -0700614# ISA-specific micro-kernels
615NEON_UKERNELS = [
Marat Dukhan99936602020-04-11 16:47:01 -0700616 "src/f32-avgpool/9p8x-minmax-neon-c4.c",
617 "src/f32-avgpool/9x-minmax-neon-c4.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700618 "src/f32-clamp/gen/neon-x4.c",
619 "src/f32-clamp/gen/neon-x8.c",
Marat Dukhan56b10cd2020-05-18 09:35:49 -0700620 "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neon-2x1.c",
621 "src/f32-conv-hwc/gen/3x3s2p0p1c3x8-neon-2x1.c",
Marat Dukhance7a3f82020-05-17 21:46:44 -0700622 "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neon-2x2.c",
623 "src/f32-conv-hwc/gen/3x3s2p0p1c3x8-neon-2x2.c",
Marat Dukhan56b10cd2020-05-18 09:35:49 -0700624 "src/f32-conv-hwc/gen/3x3s2p1c3x4-neon-2x1.c",
625 "src/f32-conv-hwc/gen/3x3s2p1c3x8-neon-2x1.c",
Marat Dukhance7a3f82020-05-17 21:46:44 -0700626 "src/f32-conv-hwc/gen/3x3s2p1c3x4-neon-2x2.c",
627 "src/f32-conv-hwc/gen/3x3s2p1c3x8-neon-2x2.c",
Marat Dukhanf5425ea2020-04-24 01:46:00 -0700628 "src/f32-dwconv/gen/up4x4-minmax-neon.c",
629 "src/f32-dwconv/gen/up4x4-minmax-neon-acc2.c",
630 "src/f32-dwconv/gen/up8x4-minmax-neon.c",
631 "src/f32-dwconv/gen/up8x4-minmax-neon-acc2.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700632 "src/f32-dwconv/gen/up4x9-minmax-neon.c",
633 "src/f32-dwconv/gen/up4x9-minmax-neon-acc2.c",
634 "src/f32-dwconv/gen/up8x9-minmax-neon.c",
635 "src/f32-dwconv/gen/up8x9-minmax-neon-acc2.c",
Marat Dukhanf5425ea2020-04-24 01:46:00 -0700636 "src/f32-dwconv/gen/up4x25-minmax-neon.c",
637 "src/f32-dwconv/gen/up4x25-minmax-neon-acc2.c",
638 "src/f32-dwconv/gen/up8x25-minmax-neon.c",
639 "src/f32-dwconv/gen/up8x25-minmax-neon-acc2.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -0700640 "src/f32-gavgpool-cw/neon-x4.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700641 "src/f32-gavgpool/7p7x-minmax-neon-c4.c",
642 "src/f32-gavgpool/7x-minmax-neon-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700643 "src/f32-gemm/gen/1x8-minmax-neon-lane-ld64.c",
644 "src/f32-gemm/gen/4x2-minmax-neon-lane-ld64.c",
645 "src/f32-gemm/gen/4x8-minmax-neon-lane-ld128.c",
646 "src/f32-gemm/gen/4x8-minmax-neon-lane-ld64.c",
647 "src/f32-gemm/gen/5x8-minmax-neon-lane-ld64.c",
648 "src/f32-gemm/gen/6x8-minmax-neon-lane-ld64.c",
649 "src/f32-gemm/gen/6x8-minmax-neon-lane-ld128.c",
650 "src/f32-gemm/gen/1x8-minmax-neon-dup-ld64.c",
651 "src/f32-gemm/gen/4x8-minmax-neon-dup-ld128.c",
652 "src/f32-gemm/gen/4x8-minmax-neon-dup-ld64.c",
653 "src/f32-gemm/gen/6x8-minmax-neon-dup-ld64.c",
654 "src/f32-gemm/gen/6x8-minmax-neon-dup-ld128.c",
655 "src/f32-gemm/gen/1x8s4-minmax-neon.c",
656 "src/f32-gemm/gen/4x8s4-minmax-neon.c",
657 "src/f32-gemm/gen/6x8s4-minmax-neon.c",
658 "src/f32-gemm/gen/8x8s4-minmax-neon.c",
659 "src/f32-gemm/gen-inc/1x8inc-minmax-neon-lane-ld64.c",
660 "src/f32-gemm/gen-inc/4x8inc-minmax-neon-lane-ld128.c",
661 "src/f32-gemm/gen-inc/4x8inc-minmax-neon-lane-ld64.c",
662 "src/f32-gemm/gen-inc/5x8inc-minmax-neon-lane-ld64.c",
663 "src/f32-gemm/gen-inc/6x8inc-minmax-neon-lane-ld64.c",
664 "src/f32-gemm/gen-inc/6x8inc-minmax-neon-lane-ld128.c",
665 "src/f32-gemm/gen-inc/1x8inc-minmax-neon-dup-ld64.c",
666 "src/f32-gemm/gen-inc/4x8inc-minmax-neon-dup-ld128.c",
667 "src/f32-gemm/gen-inc/4x8inc-minmax-neon-dup-ld64.c",
668 "src/f32-gemm/gen-inc/6x8inc-minmax-neon-dup-ld64.c",
669 "src/f32-gemm/gen-inc/6x8inc-minmax-neon-dup-ld128.c",
670 "src/f32-gemm/gen-inc/1x8s4inc-minmax-neon.c",
671 "src/f32-gemm/gen-inc/4x8s4inc-minmax-neon.c",
672 "src/f32-gemm/gen-inc/6x8s4inc-minmax-neon.c",
673 "src/f32-gemm/gen-inc/8x8s4inc-minmax-neon.c",
Marat Dukhan662faa02019-12-09 22:48:16 -0800674 "src/f32-hswish/gen/neon-x4.c",
675 "src/f32-hswish/gen/neon-x8.c",
Marat Dukhan660fd192020-03-10 04:55:30 -0700676 "src/f32-ibilinear/gen/neon-c4.c",
677 "src/f32-ibilinear/gen/neon-c8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700678 "src/f32-igemm/gen/1x8-minmax-neon-lane-ld64.c",
679 "src/f32-igemm/gen/4x2-minmax-neon-lane-ld64.c",
680 "src/f32-igemm/gen/4x4-minmax-neon-lane-ld64.c",
681 "src/f32-igemm/gen/4x8-minmax-neon-lane-ld128.c",
682 "src/f32-igemm/gen/4x8-minmax-neon-lane-ld64.c",
683 "src/f32-igemm/gen/6x8-minmax-neon-lane-ld64.c",
684 "src/f32-igemm/gen/6x8-minmax-neon-lane-ld128.c",
685 "src/f32-igemm/gen/1x8-minmax-neon-dup-ld64.c",
686 "src/f32-igemm/gen/4x8-minmax-neon-dup-ld128.c",
687 "src/f32-igemm/gen/4x8-minmax-neon-dup-ld64.c",
688 "src/f32-igemm/gen/6x8-minmax-neon-dup-ld64.c",
689 "src/f32-igemm/gen/6x8-minmax-neon-dup-ld128.c",
690 "src/f32-igemm/gen/1x8s4-minmax-neon.c",
691 "src/f32-igemm/gen/4x8s4-minmax-neon.c",
692 "src/f32-igemm/gen/6x8s4-minmax-neon.c",
693 "src/f32-igemm/gen/8x8s4-minmax-neon.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700694 "src/f32-maxpool/9p8x-minmax-neon-c4.c",
695 "src/f32-pavgpool/9p8x-minmax-neon-c4.c",
696 "src/f32-pavgpool/9x-minmax-neon-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700697 "src/f32-ppmm/gen/4x8-minmax-neon.c",
698 "src/f32-ppmm/gen/8x8-minmax-neon.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -0800699 "src/f32-prelu/gen/neon-2x4.c",
700 "src/f32-prelu/gen/neon-2x8.c",
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800701 "src/f32-raddstoreexpminusmax/gen/neon-p5-x4.c",
702 "src/f32-raddstoreexpminusmax/gen/neon-p5-x8.c",
703 "src/f32-raddstoreexpminusmax/gen/neon-p5-x8-acc2.c",
704 "src/f32-raddstoreexpminusmax/gen/neon-p5-x12.c",
705 "src/f32-raddstoreexpminusmax/gen/neon-p5-x12-acc2.c",
706 "src/f32-raddstoreexpminusmax/gen/neon-p5-x12-acc3.c",
707 "src/f32-raddstoreexpminusmax/gen/neon-p5-x16.c",
708 "src/f32-raddstoreexpminusmax/gen/neon-p5-x16-acc2.c",
709 "src/f32-raddstoreexpminusmax/gen/neon-p5-x16-acc4.c",
710 "src/f32-raddstoreexpminusmax/gen/neon-p5-x20.c",
711 "src/f32-raddstoreexpminusmax/gen/neon-p5-x20-acc2.c",
712 "src/f32-raddstoreexpminusmax/gen/neon-p5-x20-acc5.c",
713 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x4.c",
714 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x8.c",
715 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x8-acc2.c",
716 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x12.c",
717 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x12-acc2.c",
718 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x12-acc3.c",
719 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x16.c",
720 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x16-acc2.c",
721 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x16-acc4.c",
722 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x20.c",
723 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x20-acc2.c",
724 "src/f32-raddstoreexpminusmax/gen/neon-lut64-p2-x20-acc5.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700725 "src/f32-rmax/neon.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -0800726 "src/f32-sigmoid/gen/neon-frac-p9-p10-nr1recps-x16.c",
Marat Dukhan4a24a582020-01-06 13:30:00 -0800727 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x4.c",
728 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x8.c",
729 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x12.c",
730 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x16.c",
731 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x20.c",
732 "src/f32-sigmoid/gen/neon-rr2-p5-nr2recps-x24.c",
733 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x4.c",
734 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x8.c",
735 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x12.c",
736 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x16.c",
737 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x20.c",
738 "src/f32-sigmoid/gen/neon-rr2-lut64-p2-nr2recps-x24.c",
739 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x4.c",
740 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x8.c",
741 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x12.c",
742 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x16.c",
743 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x20.c",
744 "src/f32-sigmoid/gen/neon-rr2-lut2048-p1-nr2recps-x24.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700745 "src/f32-vbinary/gen/vadd-minmax-neon-x4.c",
746 "src/f32-vbinary/gen/vadd-minmax-neon-x8.c",
747 "src/f32-vbinary/gen/vaddc-minmax-neon-x4.c",
748 "src/f32-vbinary/gen/vaddc-minmax-neon-x8.c",
Marat Dukhan403b7d42019-12-05 12:49:11 -0800749 "src/f32-vbinary/gen/vmax-neon-x4.c",
750 "src/f32-vbinary/gen/vmax-neon-x8.c",
751 "src/f32-vbinary/gen/vmaxc-neon-x4.c",
752 "src/f32-vbinary/gen/vmaxc-neon-x8.c",
753 "src/f32-vbinary/gen/vmin-neon-x4.c",
754 "src/f32-vbinary/gen/vmin-neon-x8.c",
755 "src/f32-vbinary/gen/vminc-neon-x4.c",
756 "src/f32-vbinary/gen/vminc-neon-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700757 "src/f32-vbinary/gen/vmul-minmax-neon-x4.c",
758 "src/f32-vbinary/gen/vmul-minmax-neon-x8.c",
759 "src/f32-vbinary/gen/vmulc-minmax-neon-x4.c",
760 "src/f32-vbinary/gen/vmulc-minmax-neon-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700761 "src/f32-vbinary/gen/vrsqrdiffc-neon-x4.c",
762 "src/f32-vbinary/gen/vrsqrdiffc-neon-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700763 "src/f32-vbinary/gen/vrsubc-minmax-neon-x4.c",
764 "src/f32-vbinary/gen/vrsubc-minmax-neon-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -0700765 "src/f32-vbinary/gen/vsqrdiff-neon-x4.c",
766 "src/f32-vbinary/gen/vsqrdiff-neon-x8.c",
767 "src/f32-vbinary/gen/vsqrdiffc-neon-x4.c",
768 "src/f32-vbinary/gen/vsqrdiffc-neon-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700769 "src/f32-vbinary/gen/vsub-minmax-neon-x4.c",
770 "src/f32-vbinary/gen/vsub-minmax-neon-x8.c",
771 "src/f32-vbinary/gen/vsubc-minmax-neon-x4.c",
772 "src/f32-vbinary/gen/vsubc-minmax-neon-x8.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700773 "src/f32-vmulcaddc/gen/c4-minmax-neon-2x.c",
774 "src/f32-vmulcaddc/gen/c8-minmax-neon-2x.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -0700775 "src/f32-vrnd/gen/vrndne-neon-x4.c",
776 "src/f32-vrnd/gen/vrndne-neon-x8.c",
777 "src/f32-vrnd/gen/vrndz-neon-x4.c",
778 "src/f32-vrnd/gen/vrndz-neon-x8.c",
779 "src/f32-vrnd/gen/vrndu-neon-x4.c",
780 "src/f32-vrnd/gen/vrndu-neon-x8.c",
781 "src/f32-vrnd/gen/vrndd-neon-x4.c",
782 "src/f32-vrnd/gen/vrndd-neon-x8.c",
Marat Dukhan5020b962020-06-08 13:30:10 -0700783 "src/f32-vunary/gen/vabs-neon-x4.c",
784 "src/f32-vunary/gen/vabs-neon-x8.c",
785 "src/f32-vunary/gen/vneg-neon-x4.c",
786 "src/f32-vunary/gen/vneg-neon-x8.c",
787 "src/f32-vunary/gen/vsqr-neon-x4.c",
788 "src/f32-vunary/gen/vsqr-neon-x8.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700789 "src/q8-avgpool/9p8x-minmax-neon-c8.c",
790 "src/q8-avgpool/9x-minmax-neon-c8.c",
Marat Dukhande06f492020-04-09 00:19:31 -0700791 "src/q8-dwconv/up8x9-minmax-neon.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700792 "src/q8-gavgpool/7p7x-minmax-neon-c8.c",
793 "src/q8-gavgpool/7x-minmax-neon-c8.c",
Marat Dukhande06f492020-04-09 00:19:31 -0700794 "src/q8-gemm/4x8-minmax-neon.c",
795 "src/q8-gemm/8x8-minmax-neon.c",
796 "src/q8-igemm/4x8-minmax-neon.c",
797 "src/q8-igemm/8x8-minmax-neon.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700798 "src/q8-vadd/minmax-neon.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -0700799 "src/u8-clamp/neon-x64.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700800 "src/u8-maxpool/9p8x-minmax-neon-c16.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700801 "src/u8-rmax/neon.c",
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -0700802 "src/x32-fill/neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700803 "src/x32-packx/x4-neon-st4.c",
Marat Dukhan63523d42020-05-22 17:07:33 -0700804 "src/x32-pad/neon.c",
Marat Dukhan57dccd82020-04-14 00:53:10 -0700805 "src/x32-unpool/neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700806 "src/x32-zip/x2-neon.c",
807 "src/x32-zip/x3-neon.c",
808 "src/x32-zip/x4-neon.c",
809 "src/x32-zip/xm-neon.c",
810 "src/x8-zip/x2-neon.c",
811 "src/x8-zip/x3-neon.c",
812 "src/x8-zip/x4-neon.c",
813 "src/x8-zip/xm-neon.c",
Marat Dukhan075088a2020-05-12 19:42:12 -0700814 "src/math/roundne-neon-addsub.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -0700815 "src/math/roundd-neon-addsub.c",
816 "src/math/roundd-neon-cvt.c",
817 "src/math/roundu-neon-addsub.c",
818 "src/math/roundu-neon-cvt.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -0700819 "src/math/roundz-neon-addsub.c",
820 "src/math/roundz-neon-cvt.c",
Marat Dukhan68b3b452020-01-02 10:11:15 -0800821 "src/math/sigmoid-neon-frac-p9-p10-nr1recps.c",
Marat Dukhan77221d32020-01-06 10:04:39 -0800822 "src/math/sigmoid-neon-rr1-lut2048-p1-nr2recps.c",
823 "src/math/sigmoid-neon-rr1-lut64-p2-nr2recps.c",
824 "src/math/sigmoid-neon-rr1-p5-nr2recps.c",
825 "src/math/sigmoid-neon-rr2-lut2048-p1-nr2recps.c",
826 "src/math/sigmoid-neon-rr2-lut64-p2-nr2recps.c",
827 "src/math/sigmoid-neon-rr2-p5-nr2recps.c",
Marat Dukhanfe7acb62020-03-09 19:30:05 -0700828 "src/requantization/precise-neon.c",
829 "src/requantization/fp32-neon.c",
830 "src/requantization/q31-neon.c",
831 "src/requantization/gemmlowp-neon.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700832]
833
834NEONFMA_UKERNELS = [
Marat Dukhan660fd192020-03-10 04:55:30 -0700835 "src/f32-ibilinear/gen/neonfma-c4.c",
836 "src/f32-ibilinear/gen/neonfma-c8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700837 "src/f32-igemm/gen/1x8-minmax-neonfma-dup-ld64.c",
838 "src/f32-igemm/gen/4x8-minmax-neonfma-dup-ld128.c",
839 "src/f32-igemm/gen/4x8-minmax-neonfma-dup-ld64.c",
840 "src/f32-igemm/gen/6x8-minmax-neonfma-dup-ld64.c",
841 "src/f32-igemm/gen/6x8-minmax-neonfma-dup-ld128.c",
842 "src/f32-igemm/gen/1x8s4-minmax-neonfma.c",
843 "src/f32-igemm/gen/4x8s4-minmax-neonfma.c",
844 "src/f32-igemm/gen/6x8s4-minmax-neonfma.c",
845 "src/f32-igemm/gen/8x8s4-minmax-neonfma.c",
Marat Dukhanf5425ea2020-04-24 01:46:00 -0700846 "src/f32-dwconv/gen/up4x4-minmax-neonfma.c",
847 "src/f32-dwconv/gen/up4x4-minmax-neonfma-acc2.c",
848 "src/f32-dwconv/gen/up8x4-minmax-neonfma.c",
849 "src/f32-dwconv/gen/up8x4-minmax-neonfma-acc2.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700850 "src/f32-dwconv/gen/up4x9-minmax-neonfma.c",
851 "src/f32-dwconv/gen/up4x9-minmax-neonfma-acc2.c",
852 "src/f32-dwconv/gen/up8x9-minmax-neonfma.c",
853 "src/f32-dwconv/gen/up8x9-minmax-neonfma-acc2.c",
Marat Dukhanf5425ea2020-04-24 01:46:00 -0700854 "src/f32-dwconv/gen/up4x25-minmax-neonfma.c",
855 "src/f32-dwconv/gen/up4x25-minmax-neonfma-acc2.c",
856 "src/f32-dwconv/gen/up8x25-minmax-neonfma.c",
857 "src/f32-dwconv/gen/up8x25-minmax-neonfma-acc2.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700858 "src/f32-gemm/gen/1x8-minmax-neonfma-dup-ld64.c",
859 "src/f32-gemm/gen/4x8-minmax-neonfma-dup-ld128.c",
860 "src/f32-gemm/gen/4x8-minmax-neonfma-dup-ld64.c",
861 "src/f32-gemm/gen/6x8-minmax-neonfma-dup-ld64.c",
862 "src/f32-gemm/gen/6x8-minmax-neonfma-dup-ld128.c",
863 "src/f32-gemm/gen/1x8s4-minmax-neonfma.c",
864 "src/f32-gemm/gen/4x8s4-minmax-neonfma.c",
865 "src/f32-gemm/gen/6x8s4-minmax-neonfma.c",
866 "src/f32-gemm/gen/8x8s4-minmax-neonfma.c",
867 "src/f32-gemm/gen-inc/1x8inc-minmax-neonfma-dup-ld64.c",
868 "src/f32-gemm/gen-inc/4x8inc-minmax-neonfma-dup-ld128.c",
869 "src/f32-gemm/gen-inc/4x8inc-minmax-neonfma-dup-ld64.c",
870 "src/f32-gemm/gen-inc/6x8inc-minmax-neonfma-dup-ld64.c",
871 "src/f32-gemm/gen-inc/6x8inc-minmax-neonfma-dup-ld128.c",
872 "src/f32-gemm/gen-inc/1x8s4inc-minmax-neonfma.c",
873 "src/f32-gemm/gen-inc/4x8s4inc-minmax-neonfma.c",
874 "src/f32-gemm/gen-inc/6x8s4inc-minmax-neonfma.c",
875 "src/f32-gemm/gen-inc/8x8s4inc-minmax-neonfma.c",
Marat Dukhan662faa02019-12-09 22:48:16 -0800876 "src/f32-hswish/gen/neonfma-x4.c",
877 "src/f32-hswish/gen/neonfma-x8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700878 "src/f32-ppmm/gen/4x8-minmax-neonfma.c",
879 "src/f32-ppmm/gen/8x8-minmax-neonfma.c",
Marat Dukhan8137e4c2020-01-25 12:56:58 -0800880 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x4.c",
881 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x8.c",
882 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x8-acc2.c",
883 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x12.c",
884 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x12-acc2.c",
885 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x12-acc3.c",
886 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x16.c",
887 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x16-acc2.c",
888 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x16-acc4.c",
889 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x20.c",
890 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x20-acc2.c",
891 "src/f32-raddstoreexpminusmax/gen/neonfma-p5-x20-acc5.c",
892 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x4.c",
893 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x8.c",
894 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x8-acc2.c",
895 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x12.c",
896 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x12-acc2.c",
897 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x12-acc3.c",
898 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x16.c",
899 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x16-acc2.c",
900 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x16-acc4.c",
901 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x20.c",
902 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x20-acc2.c",
903 "src/f32-raddstoreexpminusmax/gen/neonfma-lut64-p2-x20-acc5.c",
Marat Dukhan4a24a582020-01-06 13:30:00 -0800904 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x4.c",
905 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x8.c",
906 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x12.c",
907 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x16.c",
908 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x20.c",
909 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2fma-x24.c",
910 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x4.c",
911 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x8.c",
912 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x12.c",
913 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x16.c",
914 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x20.c",
915 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr1recps1fma-x24.c",
916 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x4.c",
917 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x8.c",
918 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x12.c",
919 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x16.c",
920 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x20.c",
921 "src/f32-sigmoid/gen/neonfma-rr1-p5-nr2recps-x24.c",
922 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x4.c",
923 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x8.c",
924 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x12.c",
925 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x16.c",
926 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x20.c",
927 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2fma-x24.c",
928 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x4.c",
929 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x8.c",
930 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x12.c",
931 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x16.c",
932 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x20.c",
933 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr1recps1fma-x24.c",
934 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x4.c",
935 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x8.c",
936 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x12.c",
937 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x16.c",
938 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x20.c",
939 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-nr2recps-x24.c",
940 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x4.c",
941 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x8.c",
942 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x12.c",
943 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x16.c",
944 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x20.c",
945 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2fma-x24.c",
946 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x4.c",
947 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x8.c",
948 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x12.c",
949 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x16.c",
950 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x20.c",
951 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr1recps1fma-x24.c",
952 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x4.c",
953 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x8.c",
954 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x12.c",
955 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x16.c",
956 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x20.c",
957 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-nr2recps-x24.c",
Marat Dukhan99936602020-04-11 16:47:01 -0700958 "src/f32-vmulcaddc/gen/c4-minmax-neonfma-2x.c",
959 "src/f32-vmulcaddc/gen/c8-minmax-neonfma-2x.c",
Marat Dukhan797a8fe2019-11-14 20:21:57 -0800960 "src/math/exp-neonfma-lut64-p2.c",
961 "src/math/exp-neonfma-p5.c",
Marat Dukhan189ae802019-11-26 11:28:44 -0800962 "src/math/expminus-neonfma-lut2048-p1.c",
963 "src/math/expminus-neonfma-lut64-p2.c",
Marat Dukhan346a9e52019-11-15 09:06:30 -0800964 "src/math/expminus-neonfma-p5.c",
Marat Dukhan77221d32020-01-06 10:04:39 -0800965 "src/math/sigmoid-neonfma-rr1-lut2048-p1-nr1recps1fma.c",
966 "src/math/sigmoid-neonfma-rr1-lut2048-p1-nr2fma.c",
967 "src/math/sigmoid-neonfma-rr1-lut2048-p1-nr2recps.c",
968 "src/math/sigmoid-neonfma-rr1-lut64-p2-nr1recps1fma.c",
969 "src/math/sigmoid-neonfma-rr1-lut64-p2-nr2fma.c",
970 "src/math/sigmoid-neonfma-rr1-lut64-p2-nr2recps.c",
971 "src/math/sigmoid-neonfma-rr1-p5-nr1recps1fma.c",
972 "src/math/sigmoid-neonfma-rr1-p5-nr2fma.c",
973 "src/math/sigmoid-neonfma-rr1-p5-nr2recps.c",
974 "src/math/sigmoid-neonfma-rr2-lut2048-p1-nr1recps1fma.c",
975 "src/math/sigmoid-neonfma-rr2-lut2048-p1-nr2fma.c",
976 "src/math/sigmoid-neonfma-rr2-lut2048-p1-nr2recps.c",
977 "src/math/sigmoid-neonfma-rr2-lut64-p2-nr1recps1fma.c",
978 "src/math/sigmoid-neonfma-rr2-lut64-p2-nr2fma.c",
979 "src/math/sigmoid-neonfma-rr2-lut64-p2-nr2recps.c",
980 "src/math/sigmoid-neonfma-rr2-p5-nr1recps1fma.c",
981 "src/math/sigmoid-neonfma-rr2-p5-nr2fma.c",
982 "src/math/sigmoid-neonfma-rr2-p5-nr2recps.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -0700983]
984
985AARCH64_NEONFMA_UKERNELS = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -0700986 "src/f32-vbinary/gen/vdiv-minmax-neon-x4.c",
987 "src/f32-vbinary/gen/vdiv-minmax-neon-x8.c",
988 "src/f32-vbinary/gen/vdivc-minmax-neon-x4.c",
989 "src/f32-vbinary/gen/vdivc-minmax-neon-x8.c",
990 "src/f32-vbinary/gen/vrdivc-minmax-neon-x4.c",
991 "src/f32-vbinary/gen/vrdivc-minmax-neon-x8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -0700992 "src/f32-gemm/gen/1x8-minmax-neonfma-lane-ld64.c",
993 "src/f32-gemm/gen/4x2-minmax-neonfma-lane-ld64.c",
994 "src/f32-gemm/gen/4x8-minmax-neonfma-lane-ld128.c",
995 "src/f32-gemm/gen/4x8-minmax-neonfma-lane-ld64.c",
996 "src/f32-gemm/gen/5x8-minmax-neonfma-lane-ld64.c",
997 "src/f32-gemm/gen/6x8-minmax-neonfma-lane-ld64.c",
998 "src/f32-gemm/gen/6x8-minmax-neonfma-lane-ld128.c",
999 "src/f32-gemm/gen-inc/1x8inc-minmax-neonfma-lane-ld64.c",
1000 "src/f32-gemm/gen-inc/4x8inc-minmax-neonfma-lane-ld128.c",
1001 "src/f32-gemm/gen-inc/4x8inc-minmax-neonfma-lane-ld64.c",
1002 "src/f32-gemm/gen-inc/5x8inc-minmax-neonfma-lane-ld64.c",
1003 "src/f32-gemm/gen-inc/6x8inc-minmax-neonfma-lane-ld64.c",
1004 "src/f32-gemm/gen-inc/6x8inc-minmax-neonfma-lane-ld128.c",
1005 "src/f32-igemm/gen/1x8-minmax-neonfma-lane-ld64.c",
1006 "src/f32-igemm/gen/4x2-minmax-neonfma-lane-ld64.c",
1007 "src/f32-igemm/gen/4x4-minmax-neonfma-lane-ld64.c",
1008 "src/f32-igemm/gen/4x8-minmax-neonfma-lane-ld128.c",
1009 "src/f32-igemm/gen/4x8-minmax-neonfma-lane-ld64.c",
1010 "src/f32-igemm/gen/6x8-minmax-neonfma-lane-ld64.c",
1011 "src/f32-igemm/gen/6x8-minmax-neonfma-lane-ld128.c",
Marat Dukhan56b10cd2020-05-18 09:35:49 -07001012 "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neonfma-2x1.c",
1013 "src/f32-conv-hwc/gen/3x3s2p0p1c3x8-neonfma-2x1.c",
Marat Dukhance7a3f82020-05-17 21:46:44 -07001014 "src/f32-conv-hwc/gen/3x3s2p0p1c3x4-neonfma-2x2.c",
1015 "src/f32-conv-hwc/gen/3x3s2p0p1c3x8-neonfma-2x2.c",
Marat Dukhan56b10cd2020-05-18 09:35:49 -07001016 "src/f32-conv-hwc/gen/3x3s2p1c3x4-neonfma-2x1.c",
1017 "src/f32-conv-hwc/gen/3x3s2p1c3x8-neonfma-2x1.c",
Marat Dukhance7a3f82020-05-17 21:46:44 -07001018 "src/f32-conv-hwc/gen/3x3s2p1c3x4-neonfma-2x2.c",
1019 "src/f32-conv-hwc/gen/3x3s2p1c3x8-neonfma-2x2.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -07001020 "src/f32-conv-hwc2chw/3x3s2p1c3x4-neonfma-2x2.c",
1021 "src/f32-dwconv-chw/3x3p1-neonfma.c",
1022 "src/f32-dwconv-chw/5x5p2-neonfma.c",
1023 "src/f32-dwconv-chw/3x3s2p1-neonfma.c",
1024 "src/f32-dwconv-chw/5x5s2p2-neonfma.c",
Marat Dukhan4a24a582020-01-06 13:30:00 -08001025 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x4.c",
1026 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x8.c",
1027 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x12.c",
1028 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x16.c",
1029 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x20.c",
1030 "src/f32-sigmoid/gen/neonfma-rr1-p5-div-x24.c",
1031 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x4.c",
1032 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x8.c",
1033 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x12.c",
1034 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x16.c",
1035 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x20.c",
1036 "src/f32-sigmoid/gen/neonfma-rr1-lut64-p2-div-x24.c",
1037 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x4.c",
1038 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x8.c",
1039 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x12.c",
1040 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x16.c",
1041 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x20.c",
1042 "src/f32-sigmoid/gen/neonfma-rr1-lut2048-p1-div-x24.c",
Marat Dukhan355ab432020-04-09 19:01:52 -07001043 "src/f32-spmm/gen/12x1-minmax-neonfma.c",
1044 "src/f32-spmm/gen/12x2-minmax-neonfma.c",
1045 "src/f32-spmm/gen/12x4-minmax-neonfma.c",
1046 "src/f32-spmm/gen/16x1-minmax-neonfma-pipelined.c",
1047 "src/f32-spmm/gen/16x1-minmax-neonfma-unroll2.c",
1048 "src/f32-spmm/gen/16x1-minmax-neonfma.c",
1049 "src/f32-spmm/gen/16x2-minmax-neonfma.c",
1050 "src/f32-spmm/gen/16x4-minmax-neonfma.c",
1051 "src/f32-spmm/gen/4x1-minmax-neonfma-pipelined.c",
1052 "src/f32-spmm/gen/4x1-minmax-neonfma-unroll2.c",
1053 "src/f32-spmm/gen/4x1-minmax-neonfma.c",
1054 "src/f32-spmm/gen/4x2-minmax-neonfma.c",
1055 "src/f32-spmm/gen/4x4-minmax-neonfma.c",
1056 "src/f32-spmm/gen/8x1-minmax-neonfma-pipelined.c",
1057 "src/f32-spmm/gen/8x1-minmax-neonfma-unroll2.c",
1058 "src/f32-spmm/gen/8x1-minmax-neonfma.c",
1059 "src/f32-spmm/gen/8x2-minmax-neonfma.c",
1060 "src/f32-spmm/gen/8x4-minmax-neonfma.c",
Marat Dukhan77221d32020-01-06 10:04:39 -08001061 "src/math/sigmoid-neonfma-rr1-lut2048-p1-div.c",
1062 "src/math/sigmoid-neonfma-rr1-lut64-p2-div.c",
1063 "src/math/sigmoid-neonfma-rr1-p5-div.c",
1064 "src/math/sigmoid-neonfma-rr2-lut2048-p1-div.c",
1065 "src/math/sigmoid-neonfma-rr2-lut64-p2-div.c",
1066 "src/math/sigmoid-neonfma-rr2-p5-div.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001067]
1068
Marat Dukhan8853b822020-05-07 12:19:01 -07001069NEONV8_UKERNELS = [
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001070 "src/f32-vrnd/gen/vrndne-neonv8-x4.c",
1071 "src/f32-vrnd/gen/vrndne-neonv8-x8.c",
1072 "src/f32-vrnd/gen/vrndz-neonv8-x4.c",
1073 "src/f32-vrnd/gen/vrndz-neonv8-x8.c",
1074 "src/f32-vrnd/gen/vrndu-neonv8-x4.c",
1075 "src/f32-vrnd/gen/vrndu-neonv8-x8.c",
1076 "src/f32-vrnd/gen/vrndd-neonv8-x4.c",
1077 "src/f32-vrnd/gen/vrndd-neonv8-x8.c",
Marat Dukhan8853b822020-05-07 12:19:01 -07001078 "src/math/roundne-neonv8.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -07001079 "src/math/roundd-neonv8.c",
1080 "src/math/roundu-neonv8.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -07001081 "src/math/roundz-neonv8.c",
Marat Dukhan8853b822020-05-07 12:19:01 -07001082]
1083
Marat Dukhan08c4a432019-10-03 09:29:21 -07001084AARCH64_NEONFP16ARITH_UKERNELS = [
Frank Barchardb1966592020-05-12 13:47:06 -07001085 "src/f16-clamp/gen/neonfp16arith-x16.c",
1086 "src/f16-clamp/gen/neonfp16arith-x8.c",
Frank Barchard5a599a62020-06-04 20:12:44 -07001087 "src/f16-dwconv/gen/up16x25-minmax-neonfp16arith-acc2.c",
1088 "src/f16-dwconv/gen/up16x25-minmax-neonfp16arith.c",
1089 "src/f16-dwconv/gen/up16x4-minmax-neonfp16arith-acc2.c",
1090 "src/f16-dwconv/gen/up16x4-minmax-neonfp16arith.c",
1091 "src/f16-dwconv/gen/up16x9-minmax-neonfp16arith-acc2.c",
1092 "src/f16-dwconv/gen/up16x9-minmax-neonfp16arith.c",
1093 "src/f16-dwconv/gen/up8x25-minmax-neonfp16arith-acc2.c",
1094 "src/f16-dwconv/gen/up8x25-minmax-neonfp16arith.c",
1095 "src/f16-dwconv/gen/up8x4-minmax-neonfp16arith-acc2.c",
1096 "src/f16-dwconv/gen/up8x4-minmax-neonfp16arith.c",
1097 "src/f16-dwconv/gen/up8x9-minmax-neonfp16arith-acc2.c",
1098 "src/f16-dwconv/gen/up8x9-minmax-neonfp16arith.c",
Frank Barchard0bb49a72020-06-04 11:35:11 -07001099 "src/f16-gavgpool/7p7x-minmax-neonfp16arith-c8.c",
1100 "src/f16-gavgpool/7x-minmax-neonfp16arith-c8.c",
Frank Barchardb1966592020-05-12 13:47:06 -07001101 "src/f16-hswish/gen/neonfp16arith-x16.c",
1102 "src/f16-hswish/gen/neonfp16arith-x8.c",
1103 "src/f16-prelu/gen/neonfp16arith-2x16.c",
1104 "src/f16-prelu/gen/neonfp16arith-2x8.c",
Frank Barchardd793f6c2020-05-08 13:37:43 -07001105 "src/f16-vbinary/gen/vaddc-minmax-neonfp16arith-x16.c",
1106 "src/f16-vbinary/gen/vaddc-minmax-neonfp16arith-x8.c",
1107 "src/f16-vbinary/gen/vadd-minmax-neonfp16arith-x16.c",
1108 "src/f16-vbinary/gen/vadd-minmax-neonfp16arith-x8.c",
1109 "src/f16-vbinary/gen/vdivc-minmax-neonfp16arith-x16.c",
1110 "src/f16-vbinary/gen/vdivc-minmax-neonfp16arith-x8.c",
1111 "src/f16-vbinary/gen/vdiv-minmax-neonfp16arith-x16.c",
1112 "src/f16-vbinary/gen/vdiv-minmax-neonfp16arith-x8.c",
1113 "src/f16-vbinary/gen/vmaxc-neonfp16arith-x16.c",
1114 "src/f16-vbinary/gen/vmaxc-neonfp16arith-x8.c",
1115 "src/f16-vbinary/gen/vmax-neonfp16arith-x16.c",
1116 "src/f16-vbinary/gen/vmax-neonfp16arith-x8.c",
1117 "src/f16-vbinary/gen/vminc-neonfp16arith-x16.c",
1118 "src/f16-vbinary/gen/vminc-neonfp16arith-x8.c",
1119 "src/f16-vbinary/gen/vmin-neonfp16arith-x16.c",
1120 "src/f16-vbinary/gen/vmin-neonfp16arith-x8.c",
1121 "src/f16-vbinary/gen/vmulc-minmax-neonfp16arith-x16.c",
1122 "src/f16-vbinary/gen/vmulc-minmax-neonfp16arith-x8.c",
1123 "src/f16-vbinary/gen/vmul-minmax-neonfp16arith-x16.c",
1124 "src/f16-vbinary/gen/vmul-minmax-neonfp16arith-x8.c",
1125 "src/f16-vbinary/gen/vrdivc-minmax-neonfp16arith-x16.c",
1126 "src/f16-vbinary/gen/vrdivc-minmax-neonfp16arith-x8.c",
1127 "src/f16-vbinary/gen/vrsubc-minmax-neonfp16arith-x16.c",
1128 "src/f16-vbinary/gen/vrsubc-minmax-neonfp16arith-x8.c",
1129 "src/f16-vbinary/gen/vsubc-minmax-neonfp16arith-x16.c",
1130 "src/f16-vbinary/gen/vsubc-minmax-neonfp16arith-x8.c",
1131 "src/f16-vbinary/gen/vsub-minmax-neonfp16arith-x16.c",
1132 "src/f16-vbinary/gen/vsub-minmax-neonfp16arith-x8.c",
Frank Barchard2a1049c2020-06-03 02:31:27 -07001133 "src/f16-vmulcaddc/gen/c16-minmax-neonfp16arith-2x.c",
1134 "src/f16-vmulcaddc/gen/c8-minmax-neonfp16arith-2x.c",
Frank Barchard83ea9392020-04-20 20:15:14 -07001135 "src/f16-gemm/gen/1x8-minmax-neonfp16arith-ld64.c",
1136 "src/f16-gemm/gen/4x8-minmax-neonfp16arith-ld64.c",
1137 "src/f16-gemm/gen/6x8-minmax-neonfp16arith-ld64.c",
1138 "src/f16-gemm/gen/8x8-minmax-neonfp16arith-ld64.c",
1139 "src/f16-gemm/gen-inc/1x8inc-minmax-neonfp16arith-ld64.c",
1140 "src/f16-gemm/gen-inc/4x8inc-minmax-neonfp16arith-ld64.c",
1141 "src/f16-gemm/gen-inc/6x8inc-minmax-neonfp16arith-ld64.c",
1142 "src/f16-gemm/gen-inc/8x8inc-minmax-neonfp16arith-ld64.c",
Frank Barchardb0e4fae2020-05-04 15:27:51 -07001143 "src/f16-igemm/gen/1x8-minmax-neonfp16arith-ld64.c",
1144 "src/f16-igemm/gen/4x8-minmax-neonfp16arith-ld64.c",
1145 "src/f16-igemm/gen/6x8-minmax-neonfp16arith-ld64.c",
1146 "src/f16-igemm/gen/8x8-minmax-neonfp16arith-ld64.c",
Frank Barchard3f9f99f2020-05-06 01:12:04 -07001147 "src/f16-gemm/gen/1x16-minmax-neonfp16arith-ld64.c",
1148 "src/f16-gemm/gen/4x16-minmax-neonfp16arith-ld64.c",
1149 "src/f16-gemm/gen/6x16-minmax-neonfp16arith-ld64.c",
1150 "src/f16-gemm/gen/8x16-minmax-neonfp16arith-ld64.c",
1151 "src/f16-gemm/gen-inc/1x16inc-minmax-neonfp16arith-ld64.c",
1152 "src/f16-gemm/gen-inc/4x16inc-minmax-neonfp16arith-ld64.c",
1153 "src/f16-gemm/gen-inc/6x16inc-minmax-neonfp16arith-ld64.c",
1154 "src/f16-gemm/gen-inc/8x16inc-minmax-neonfp16arith-ld64.c",
1155 "src/f16-igemm/gen/1x16-minmax-neonfp16arith-ld64.c",
1156 "src/f16-igemm/gen/4x16-minmax-neonfp16arith-ld64.c",
1157 "src/f16-igemm/gen/6x16-minmax-neonfp16arith-ld64.c",
1158 "src/f16-igemm/gen/8x16-minmax-neonfp16arith-ld64.c",
Marat Dukhan355ab432020-04-09 19:01:52 -07001159 "src/f16-spmm/gen/8x1-minmax-neonfp16arith.c",
1160 "src/f16-spmm/gen/8x1-minmax-neonfp16arith-unroll2.c",
1161 "src/f16-spmm/gen/16x1-minmax-neonfp16arith.c",
1162 "src/f16-spmm/gen/16x1-minmax-neonfp16arith-unroll2.c",
1163 "src/f16-spmm/gen/24x1-minmax-neonfp16arith.c",
1164 "src/f16-spmm/gen/24x1-minmax-neonfp16arith-unroll2.c",
1165 "src/f16-spmm/gen/32x1-minmax-neonfp16arith.c",
1166 "src/f16-spmm/gen/32x1-minmax-neonfp16arith-unroll2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001167]
1168
1169SSE_UKERNELS = [
Marat Dukhan99936602020-04-11 16:47:01 -07001170 "src/f32-avgpool/9p8x-minmax-sse-c4.c",
1171 "src/f32-avgpool/9x-minmax-sse-c4.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001172 "src/f32-clamp/gen/sse-x4.c",
1173 "src/f32-clamp/gen/sse-x8.c",
Erich Elsenb1233402020-06-08 15:53:15 -07001174 "src/f32-conv-hwc2chw/3x3s2p1c3x4-sse-1x1.c",
1175 "src/f32-conv-hwc2chw/3x3s2p1c3x4-sse-2x2.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -07001176 "src/f32-dwconv-chw/3x3p1-sse.c",
1177 "src/f32-dwconv-chw/3x3s2p1-sse.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001178 "src/f32-dwconv/gen/up4x25-minmax-sse-acc2.c",
1179 "src/f32-dwconv/gen/up4x25-minmax-sse.c",
1180 "src/f32-dwconv/gen/up4x4-minmax-sse-acc2.c",
1181 "src/f32-dwconv/gen/up4x4-minmax-sse.c",
1182 "src/f32-dwconv/gen/up4x9-minmax-sse-acc2.c",
1183 "src/f32-dwconv/gen/up4x9-minmax-sse.c",
1184 "src/f32-dwconv/gen/up8x25-minmax-sse-acc2.c",
1185 "src/f32-dwconv/gen/up8x25-minmax-sse.c",
1186 "src/f32-dwconv/gen/up8x4-minmax-sse-acc2.c",
1187 "src/f32-dwconv/gen/up8x4-minmax-sse.c",
1188 "src/f32-dwconv/gen/up8x9-minmax-sse-acc2.c",
1189 "src/f32-dwconv/gen/up8x9-minmax-sse.c",
Marat Dukhan1f29b802020-05-15 23:46:39 -07001190 "src/f32-gavgpool-cw/sse-x4.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001191 "src/f32-gavgpool/7p7x-minmax-sse-c4.c",
1192 "src/f32-gavgpool/7x-minmax-sse-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001193 "src/f32-gemm/gen/1x8-minmax-sse-dup.c",
1194 "src/f32-gemm/gen/1x8-minmax-sse-load1.c",
1195 "src/f32-gemm/gen/1x8s4-minmax-sse.c",
1196 "src/f32-gemm/gen/4x2c4-minmax-sse.c",
1197 "src/f32-gemm/gen/4x8-minmax-sse-dup.c",
1198 "src/f32-gemm/gen/4x8-minmax-sse-load1.c",
1199 "src/f32-gemm/gen/4x8s4-minmax-sse.c",
1200 "src/f32-gemm/gen-inc/1x8inc-minmax-sse-dup.c",
1201 "src/f32-gemm/gen-inc/1x8inc-minmax-sse-load1.c",
1202 "src/f32-gemm/gen-inc/1x8s4inc-minmax-sse.c",
1203 "src/f32-gemm/gen-inc/4x8inc-minmax-sse-dup.c",
1204 "src/f32-gemm/gen-inc/4x8inc-minmax-sse-load1.c",
1205 "src/f32-gemm/gen-inc/4x8s4inc-minmax-sse.c",
Marat Dukhan662faa02019-12-09 22:48:16 -08001206 "src/f32-hswish/gen/sse-x4.c",
1207 "src/f32-hswish/gen/sse-x8.c",
Marat Dukhan660fd192020-03-10 04:55:30 -07001208 "src/f32-ibilinear/gen/sse-c4.c",
1209 "src/f32-ibilinear/gen/sse-c8.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001210 "src/f32-igemm/gen/1x8-minmax-sse-dup.c",
1211 "src/f32-igemm/gen/1x8-minmax-sse-load1.c",
1212 "src/f32-igemm/gen/1x8s4-minmax-sse.c",
1213 "src/f32-igemm/gen/4x2c4-minmax-sse.c",
1214 "src/f32-igemm/gen/4x8-minmax-sse-dup.c",
1215 "src/f32-igemm/gen/4x8-minmax-sse-load1.c",
1216 "src/f32-igemm/gen/4x8s4-minmax-sse.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001217 "src/f32-maxpool/9p8x-minmax-sse-c4.c",
1218 "src/f32-pavgpool/9p8x-minmax-sse-c4.c",
1219 "src/f32-pavgpool/9x-minmax-sse-c4.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001220 "src/f32-ppmm/gen/4x8-minmax-sse.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001221 "src/f32-rmax/sse.c",
Marat Dukhan355ab432020-04-09 19:01:52 -07001222 "src/f32-spmm/gen/4x1-minmax-sse.c",
1223 "src/f32-spmm/gen/8x1-minmax-sse.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001224 "src/f32-vbinary/gen/vadd-minmax-sse-x4.c",
1225 "src/f32-vbinary/gen/vadd-minmax-sse-x8.c",
1226 "src/f32-vbinary/gen/vaddc-minmax-sse-x4.c",
1227 "src/f32-vbinary/gen/vaddc-minmax-sse-x8.c",
1228 "src/f32-vbinary/gen/vdiv-minmax-sse-x4.c",
1229 "src/f32-vbinary/gen/vdiv-minmax-sse-x8.c",
1230 "src/f32-vbinary/gen/vdivc-minmax-sse-x4.c",
1231 "src/f32-vbinary/gen/vdivc-minmax-sse-x8.c",
Marat Dukhan403b7d42019-12-05 12:49:11 -08001232 "src/f32-vbinary/gen/vmax-sse-x4.c",
1233 "src/f32-vbinary/gen/vmax-sse-x8.c",
1234 "src/f32-vbinary/gen/vmaxc-sse-x4.c",
1235 "src/f32-vbinary/gen/vmaxc-sse-x8.c",
1236 "src/f32-vbinary/gen/vmin-sse-x4.c",
1237 "src/f32-vbinary/gen/vmin-sse-x8.c",
1238 "src/f32-vbinary/gen/vminc-sse-x4.c",
1239 "src/f32-vbinary/gen/vminc-sse-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001240 "src/f32-vbinary/gen/vmul-minmax-sse-x4.c",
1241 "src/f32-vbinary/gen/vmul-minmax-sse-x8.c",
1242 "src/f32-vbinary/gen/vmulc-minmax-sse-x4.c",
1243 "src/f32-vbinary/gen/vmulc-minmax-sse-x8.c",
1244 "src/f32-vbinary/gen/vrdivc-minmax-sse-x4.c",
1245 "src/f32-vbinary/gen/vrdivc-minmax-sse-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001246 "src/f32-vbinary/gen/vrsqrdiffc-sse-x4.c",
1247 "src/f32-vbinary/gen/vrsqrdiffc-sse-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001248 "src/f32-vbinary/gen/vrsubc-minmax-sse-x4.c",
1249 "src/f32-vbinary/gen/vrsubc-minmax-sse-x8.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001250 "src/f32-vbinary/gen/vsqrdiff-sse-x4.c",
1251 "src/f32-vbinary/gen/vsqrdiff-sse-x8.c",
1252 "src/f32-vbinary/gen/vsqrdiffc-sse-x4.c",
1253 "src/f32-vbinary/gen/vsqrdiffc-sse-x8.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001254 "src/f32-vbinary/gen/vsub-minmax-sse-x4.c",
1255 "src/f32-vbinary/gen/vsub-minmax-sse-x8.c",
1256 "src/f32-vbinary/gen/vsubc-minmax-sse-x4.c",
1257 "src/f32-vbinary/gen/vsubc-minmax-sse-x8.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001258 "src/f32-vmulcaddc/gen/c4-minmax-sse-2x.c",
1259 "src/f32-vmulcaddc/gen/c8-minmax-sse-2x.c",
Marat Dukhan5020b962020-06-08 13:30:10 -07001260 "src/f32-vunary/gen/vabs-sse-x4.c",
1261 "src/f32-vunary/gen/vabs-sse-x8.c",
1262 "src/f32-vunary/gen/vneg-sse-x4.c",
1263 "src/f32-vunary/gen/vneg-sse-x8.c",
1264 "src/f32-vunary/gen/vsqr-sse-x4.c",
1265 "src/f32-vunary/gen/vsqr-sse-x8.c",
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -07001266 "src/x32-fill/sse.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001267 "src/x32-packx/x4-sse.c",
Marat Dukhan63523d42020-05-22 17:07:33 -07001268 "src/x32-pad/sse.c",
Marat Dukhan075088a2020-05-12 19:42:12 -07001269 "src/math/roundne-sse-addsub.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -07001270 "src/math/roundd-sse-addsub.c",
1271 "src/math/roundu-sse-addsub.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -07001272 "src/math/roundz-sse-addsub.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001273]
1274
1275SSE2_UKERNELS = [
Marat Dukhan329da642019-11-19 21:44:39 -08001276 "src/f32-argmaxpool/9p8x-sse2-c4.c",
1277 "src/f32-argmaxpool/4x-sse2-c4.c",
1278 "src/f32-argmaxpool/9x-sse2-c4.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -08001279 "src/f32-prelu/gen/sse2-2x4.c",
1280 "src/f32-prelu/gen/sse2-2x8.c",
Marat Dukhanb39689d2020-01-24 13:32:20 -08001281 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x4.c",
1282 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x8.c",
1283 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x8-acc2.c",
1284 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x12.c",
1285 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x12-acc2.c",
1286 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x12-acc3.c",
1287 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x16.c",
1288 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x16-acc2.c",
1289 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x16-acc4.c",
1290 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x20.c",
1291 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x20-acc2.c",
1292 "src/f32-raddstoreexpminusmax/gen/sse2-p5-x20-acc5.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001293 "src/f32-sigmoid/gen/sse2-p5-div-x4.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -08001294 "src/f32-sigmoid/gen/sse2-p5-div-x8.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001295 "src/f32-sigmoid/gen/sse2-p5-div-x12.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -08001296 "src/f32-sigmoid/gen/sse2-p5-div-x16.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001297 "src/f32-sigmoid/gen/sse2-p5-div-x20.c",
1298 "src/f32-sigmoid/gen/sse2-p5-div-x24.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001299 "src/f32-vrnd/gen/vrndne-sse2-x4.c",
1300 "src/f32-vrnd/gen/vrndne-sse2-x8.c",
1301 "src/f32-vrnd/gen/vrndz-sse2-x4.c",
1302 "src/f32-vrnd/gen/vrndz-sse2-x8.c",
1303 "src/f32-vrnd/gen/vrndu-sse2-x4.c",
1304 "src/f32-vrnd/gen/vrndu-sse2-x8.c",
1305 "src/f32-vrnd/gen/vrndd-sse2-x4.c",
1306 "src/f32-vrnd/gen/vrndd-sse2-x8.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001307 "src/q8-avgpool/9p8x-minmax-sse2-c8.c",
1308 "src/q8-avgpool/9x-minmax-sse2-c8.c",
Marat Dukhande06f492020-04-09 00:19:31 -07001309 "src/q8-igemm/4x4c2-minmax-sse2.c",
1310 "src/q8-dwconv/up8x9-minmax-sse2.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001311 "src/q8-gavgpool/7p7x-minmax-sse2-c8.c",
1312 "src/q8-gavgpool/7x-minmax-sse2-c8.c",
Marat Dukhande06f492020-04-09 00:19:31 -07001313 "src/q8-gemm/2x4c8-minmax-sse2.c",
1314 "src/q8-gemm/4x4c2-minmax-sse2.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001315 "src/q8-vadd/minmax-sse2.c",
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001316 "src/u8-clamp/sse2-x64.c",
Marat Dukhan99936602020-04-11 16:47:01 -07001317 "src/u8-maxpool/9p8x-minmax-sse2-c16.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001318 "src/u8-rmax/sse2.c",
Marat Dukhan57dccd82020-04-14 00:53:10 -07001319 "src/x32-unpool/sse2.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001320 "src/x32-zip/x2-sse2.c",
1321 "src/x32-zip/x3-sse2.c",
1322 "src/x32-zip/x4-sse2.c",
1323 "src/x32-zip/xm-sse2.c",
1324 "src/x8-zip/x2-sse2.c",
1325 "src/x8-zip/x3-sse2.c",
1326 "src/x8-zip/x4-sse2.c",
1327 "src/x8-zip/xm-sse2.c",
Marat Dukhanffd68402019-11-15 15:19:11 -08001328 "src/math/exp-sse2-p5.c",
1329 "src/math/expminus-sse2-p5.c",
Marat Dukhan075088a2020-05-12 19:42:12 -07001330 "src/math/roundne-sse2-cvt.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -07001331 "src/math/roundd-sse2-cvt.c",
1332 "src/math/roundu-sse2-cvt.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -07001333 "src/math/roundz-sse2-cvt.c",
Marat Dukhan80bafd22019-11-18 10:16:01 -08001334 "src/math/sigmoid-sse2-p5-div.c",
Marat Dukhanfe7acb62020-03-09 19:30:05 -07001335 "src/requantization/precise-sse2.c",
1336 "src/requantization/fp32-sse2.c",
1337 "src/requantization/q31-sse2.c",
1338 "src/requantization/gemmlowp-sse2.c",
1339]
1340
1341SSSE3_UKERNELS = [
1342 "src/requantization/precise-ssse3.c",
1343 "src/requantization/q31-ssse3.c",
1344 "src/requantization/gemmlowp-ssse3.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001345]
1346
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08001347SSE41_UKERNELS = [
Marat Dukhan40a672f2019-11-25 03:08:22 -08001348 "src/f32-prelu/gen/sse41-2x4.c",
1349 "src/f32-prelu/gen/sse41-2x8.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001350 "src/f32-sigmoid/gen/sse41-p5-div-x4.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -08001351 "src/f32-sigmoid/gen/sse41-p5-div-x8.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001352 "src/f32-sigmoid/gen/sse41-p5-div-x12.c",
Marat Dukhan40a672f2019-11-25 03:08:22 -08001353 "src/f32-sigmoid/gen/sse41-p5-div-x16.c",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08001354 "src/f32-sigmoid/gen/sse41-p5-div-x20.c",
1355 "src/f32-sigmoid/gen/sse41-p5-div-x24.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001356 "src/f32-vrnd/gen/vrndne-sse41-x4.c",
1357 "src/f32-vrnd/gen/vrndne-sse41-x8.c",
1358 "src/f32-vrnd/gen/vrndz-sse41-x4.c",
1359 "src/f32-vrnd/gen/vrndz-sse41-x8.c",
1360 "src/f32-vrnd/gen/vrndu-sse41-x4.c",
1361 "src/f32-vrnd/gen/vrndu-sse41-x8.c",
1362 "src/f32-vrnd/gen/vrndd-sse41-x4.c",
1363 "src/f32-vrnd/gen/vrndd-sse41-x8.c",
Marat Dukhan8853b822020-05-07 12:19:01 -07001364 "src/math/roundne-sse41.c",
Marat Dukhanc9852ba2020-05-13 17:21:29 -07001365 "src/math/roundd-sse41.c",
1366 "src/math/roundu-sse41.c",
Marat Dukhan2dbb9442020-05-12 20:43:43 -07001367 "src/math/roundz-sse41.c",
Marat Dukhanfe7acb62020-03-09 19:30:05 -07001368 "src/requantization/precise-sse4.c",
1369 "src/requantization/q31-sse4.c",
1370 "src/requantization/gemmlowp-sse4.c",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08001371]
1372
Marat Dukhan08c4a432019-10-03 09:29:21 -07001373AVX_UKERNELS = [
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001374 "src/f32-clamp/gen/avx-x8.c",
1375 "src/f32-clamp/gen/avx-x16.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001376 "src/f32-dwconv/gen/up16x4-minmax-avx-acc2.c",
1377 "src/f32-dwconv/gen/up16x4-minmax-avx.c",
1378 "src/f32-dwconv/gen/up8x4-minmax-avx-acc2.c",
1379 "src/f32-dwconv/gen/up8x4-minmax-avx.c",
1380 "src/f32-dwconv/gen/up16x9-minmax-avx-acc2.c",
1381 "src/f32-dwconv/gen/up16x9-minmax-avx.c",
1382 "src/f32-dwconv/gen/up8x9-minmax-avx-acc2.c",
1383 "src/f32-dwconv/gen/up8x9-minmax-avx.c",
1384 "src/f32-dwconv/gen/up16x25-minmax-avx-acc2.c",
1385 "src/f32-dwconv/gen/up16x25-minmax-avx.c",
1386 "src/f32-dwconv/gen/up8x25-minmax-avx-acc2.c",
1387 "src/f32-dwconv/gen/up8x25-minmax-avx.c",
1388 "src/f32-gemm/gen/1x8-minmax-avx-broadcast.c",
1389 "src/f32-gemm/gen/4x8-minmax-avx-broadcast.c",
1390 "src/f32-gemm/gen/5x8-minmax-avx-broadcast.c",
1391 "src/f32-gemm/gen/6x8-minmax-avx-broadcast.c",
1392 "src/f32-gemm/gen/7x8-minmax-avx-broadcast.c",
1393 "src/f32-gemm/gen/1x16-minmax-avx-broadcast.c",
1394 "src/f32-gemm/gen/3x16-minmax-avx-broadcast.c",
1395 "src/f32-gemm/gen/4x16-minmax-avx-broadcast.c",
1396 "src/f32-gemm/gen/5x16-minmax-avx-broadcast.c",
1397 "src/f32-gemm/gen-inc/1x8inc-minmax-avx-broadcast.c",
1398 "src/f32-gemm/gen-inc/4x8inc-minmax-avx-broadcast.c",
1399 "src/f32-gemm/gen-inc/5x8inc-minmax-avx-broadcast.c",
1400 "src/f32-gemm/gen-inc/6x8inc-minmax-avx-broadcast.c",
1401 "src/f32-gemm/gen-inc/7x8inc-minmax-avx-broadcast.c",
1402 "src/f32-gemm/gen-inc/1x16inc-minmax-avx-broadcast.c",
1403 "src/f32-gemm/gen-inc/3x16inc-minmax-avx-broadcast.c",
1404 "src/f32-gemm/gen-inc/4x16inc-minmax-avx-broadcast.c",
1405 "src/f32-gemm/gen-inc/5x16inc-minmax-avx-broadcast.c",
Marat Dukhan662faa02019-12-09 22:48:16 -08001406 "src/f32-hswish/gen/avx-x8.c",
1407 "src/f32-hswish/gen/avx-x16.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001408 "src/f32-igemm/gen/1x8-minmax-avx-broadcast.c",
1409 "src/f32-igemm/gen/4x8-minmax-avx-broadcast.c",
1410 "src/f32-igemm/gen/5x8-minmax-avx-broadcast.c",
1411 "src/f32-igemm/gen/6x8-minmax-avx-broadcast.c",
1412 "src/f32-igemm/gen/7x8-minmax-avx-broadcast.c",
1413 "src/f32-igemm/gen/1x16-minmax-avx-broadcast.c",
1414 "src/f32-igemm/gen/3x16-minmax-avx-broadcast.c",
1415 "src/f32-igemm/gen/4x16-minmax-avx-broadcast.c",
1416 "src/f32-igemm/gen/5x16-minmax-avx-broadcast.c",
Marat Dukhan90eca0a2020-03-11 00:52:23 -07001417 "src/f32-prelu/gen/avx-2x8.c",
1418 "src/f32-prelu/gen/avx-2x16.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001419 "src/f32-rmax/avx.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001420 "src/f32-vbinary/gen/vadd-minmax-avx-x8.c",
1421 "src/f32-vbinary/gen/vadd-minmax-avx-x16.c",
1422 "src/f32-vbinary/gen/vaddc-minmax-avx-x8.c",
1423 "src/f32-vbinary/gen/vaddc-minmax-avx-x16.c",
1424 "src/f32-vbinary/gen/vdiv-minmax-avx-x8.c",
1425 "src/f32-vbinary/gen/vdiv-minmax-avx-x16.c",
1426 "src/f32-vbinary/gen/vdivc-minmax-avx-x8.c",
1427 "src/f32-vbinary/gen/vdivc-minmax-avx-x16.c",
Marat Dukhan9a88efe2019-12-10 15:54:24 -08001428 "src/f32-vbinary/gen/vmax-avx-x8.c",
1429 "src/f32-vbinary/gen/vmax-avx-x16.c",
1430 "src/f32-vbinary/gen/vmaxc-avx-x8.c",
1431 "src/f32-vbinary/gen/vmaxc-avx-x16.c",
1432 "src/f32-vbinary/gen/vmin-avx-x8.c",
1433 "src/f32-vbinary/gen/vmin-avx-x16.c",
1434 "src/f32-vbinary/gen/vminc-avx-x8.c",
1435 "src/f32-vbinary/gen/vminc-avx-x16.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001436 "src/f32-vbinary/gen/vmul-minmax-avx-x8.c",
1437 "src/f32-vbinary/gen/vmul-minmax-avx-x16.c",
1438 "src/f32-vbinary/gen/vmulc-minmax-avx-x8.c",
1439 "src/f32-vbinary/gen/vmulc-minmax-avx-x16.c",
1440 "src/f32-vbinary/gen/vrdivc-minmax-avx-x8.c",
1441 "src/f32-vbinary/gen/vrdivc-minmax-avx-x16.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001442 "src/f32-vbinary/gen/vrsqrdiffc-avx-x8.c",
1443 "src/f32-vbinary/gen/vrsqrdiffc-avx-x16.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001444 "src/f32-vbinary/gen/vrsubc-minmax-avx-x8.c",
1445 "src/f32-vbinary/gen/vrsubc-minmax-avx-x16.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001446 "src/f32-vbinary/gen/vsqrdiff-avx-x8.c",
1447 "src/f32-vbinary/gen/vsqrdiff-avx-x16.c",
1448 "src/f32-vbinary/gen/vsqrdiffc-avx-x8.c",
1449 "src/f32-vbinary/gen/vsqrdiffc-avx-x16.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001450 "src/f32-vbinary/gen/vsub-minmax-avx-x8.c",
1451 "src/f32-vbinary/gen/vsub-minmax-avx-x16.c",
1452 "src/f32-vbinary/gen/vsubc-minmax-avx-x8.c",
1453 "src/f32-vbinary/gen/vsubc-minmax-avx-x16.c",
Marat Dukhan05ac8e32019-10-21 15:39:33 -07001454 "src/f32-vscale/avx-unroll32.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001455 "src/f32-vrnd/gen/vrndne-avx-x8.c",
1456 "src/f32-vrnd/gen/vrndne-avx-x16.c",
1457 "src/f32-vrnd/gen/vrndz-avx-x8.c",
1458 "src/f32-vrnd/gen/vrndz-avx-x16.c",
1459 "src/f32-vrnd/gen/vrndu-avx-x8.c",
1460 "src/f32-vrnd/gen/vrndu-avx-x16.c",
1461 "src/f32-vrnd/gen/vrndd-avx-x8.c",
1462 "src/f32-vrnd/gen/vrndd-avx-x16.c",
Marat Dukhan5020b962020-06-08 13:30:10 -07001463 "src/f32-vunary/gen/vabs-avx-x8.c",
1464 "src/f32-vunary/gen/vabs-avx-x16.c",
1465 "src/f32-vunary/gen/vneg-avx-x8.c",
1466 "src/f32-vunary/gen/vneg-avx-x16.c",
1467 "src/f32-vunary/gen/vsqr-avx-x8.c",
1468 "src/f32-vunary/gen/vsqr-avx-x16.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001469]
1470
Marat Dukhanfda12b82019-11-21 12:27:59 -08001471FMA3_UKERNELS = [
Marat Dukhan1c587112020-04-08 20:04:28 -07001472 "src/f32-dwconv/gen/up16x4-minmax-fma3-acc2.c",
1473 "src/f32-dwconv/gen/up16x4-minmax-fma3.c",
1474 "src/f32-dwconv/gen/up8x4-minmax-fma3-acc2.c",
1475 "src/f32-dwconv/gen/up8x4-minmax-fma3.c",
1476 "src/f32-dwconv/gen/up16x9-minmax-fma3-acc2.c",
1477 "src/f32-dwconv/gen/up16x9-minmax-fma3.c",
1478 "src/f32-dwconv/gen/up8x9-minmax-fma3-acc2.c",
1479 "src/f32-dwconv/gen/up8x9-minmax-fma3.c",
1480 "src/f32-dwconv/gen/up16x25-minmax-fma3-acc2.c",
1481 "src/f32-dwconv/gen/up16x25-minmax-fma3.c",
1482 "src/f32-dwconv/gen/up8x25-minmax-fma3-acc2.c",
1483 "src/f32-dwconv/gen/up8x25-minmax-fma3.c",
1484 "src/f32-gemm/gen/1x8-minmax-fma3-broadcast.c",
1485 "src/f32-gemm/gen/4x8-minmax-fma3-broadcast.c",
1486 "src/f32-gemm/gen/5x8-minmax-fma3-broadcast.c",
1487 "src/f32-gemm/gen/6x8-minmax-fma3-broadcast.c",
1488 "src/f32-gemm/gen/7x8-minmax-fma3-broadcast.c",
1489 "src/f32-gemm/gen/8x8-minmax-fma3-broadcast.c",
1490 "src/f32-gemm/gen/1x16-minmax-fma3-broadcast.c",
1491 "src/f32-gemm/gen/3x16-minmax-fma3-broadcast.c",
1492 "src/f32-gemm/gen/4x16-minmax-fma3-broadcast.c",
1493 "src/f32-gemm/gen/5x16-minmax-fma3-broadcast.c",
1494 "src/f32-gemm/gen/1x16s4-minmax-fma3-broadcast.c",
1495 "src/f32-gemm/gen/3x16s4-minmax-fma3-broadcast.c",
1496 "src/f32-gemm/gen/4x16s4-minmax-fma3-broadcast.c",
1497 "src/f32-gemm/gen/5x16s4-minmax-fma3-broadcast.c",
1498 "src/f32-gemm/gen-inc/1x8inc-minmax-fma3-broadcast.c",
1499 "src/f32-gemm/gen-inc/4x8inc-minmax-fma3-broadcast.c",
1500 "src/f32-gemm/gen-inc/5x8inc-minmax-fma3-broadcast.c",
1501 "src/f32-gemm/gen-inc/6x8inc-minmax-fma3-broadcast.c",
1502 "src/f32-gemm/gen-inc/7x8inc-minmax-fma3-broadcast.c",
1503 "src/f32-gemm/gen-inc/8x8inc-minmax-fma3-broadcast.c",
1504 "src/f32-gemm/gen-inc/1x16inc-minmax-fma3-broadcast.c",
1505 "src/f32-gemm/gen-inc/3x16inc-minmax-fma3-broadcast.c",
1506 "src/f32-gemm/gen-inc/4x16inc-minmax-fma3-broadcast.c",
1507 "src/f32-gemm/gen-inc/5x16inc-minmax-fma3-broadcast.c",
1508 "src/f32-gemm/gen-inc/1x16s4inc-minmax-fma3-broadcast.c",
1509 "src/f32-gemm/gen-inc/3x16s4inc-minmax-fma3-broadcast.c",
1510 "src/f32-gemm/gen-inc/4x16s4inc-minmax-fma3-broadcast.c",
1511 "src/f32-gemm/gen-inc/5x16s4inc-minmax-fma3-broadcast.c",
Marat Dukhan662faa02019-12-09 22:48:16 -08001512 "src/f32-hswish/gen/fma3-x8.c",
1513 "src/f32-hswish/gen/fma3-x16.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001514 "src/f32-igemm/gen/1x8-minmax-fma3-broadcast.c",
1515 "src/f32-igemm/gen/4x8-minmax-fma3-broadcast.c",
1516 "src/f32-igemm/gen/5x8-minmax-fma3-broadcast.c",
1517 "src/f32-igemm/gen/6x8-minmax-fma3-broadcast.c",
1518 "src/f32-igemm/gen/7x8-minmax-fma3-broadcast.c",
1519 "src/f32-igemm/gen/8x8-minmax-fma3-broadcast.c",
1520 "src/f32-igemm/gen/1x16-minmax-fma3-broadcast.c",
1521 "src/f32-igemm/gen/3x16-minmax-fma3-broadcast.c",
1522 "src/f32-igemm/gen/4x16-minmax-fma3-broadcast.c",
1523 "src/f32-igemm/gen/5x16-minmax-fma3-broadcast.c",
1524 "src/f32-igemm/gen/1x16s4-minmax-fma3-broadcast.c",
1525 "src/f32-igemm/gen/3x16s4-minmax-fma3-broadcast.c",
1526 "src/f32-igemm/gen/4x16s4-minmax-fma3-broadcast.c",
1527 "src/f32-igemm/gen/5x16s4-minmax-fma3-broadcast.c",
Marat Dukhanfda12b82019-11-21 12:27:59 -08001528]
1529
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001530AVX2_UKERNELS = [
Marat Dukhan4c4eb002019-12-08 21:27:49 -08001531 "src/f32-raddexpminusmax/gen/avx2-p5-x64.c",
1532 "src/f32-raddexpminusmax/gen/avx2-p5-x64-acc2.c",
1533 "src/f32-raddexpminusmax/gen/avx2-p5-x64-acc4.c",
1534 "src/f32-raddexpminusmax/gen/avx2-p5-x72.c",
1535 "src/f32-raddexpminusmax/gen/avx2-p5-x72-acc3.c",
1536 "src/f32-raddexpminusmax/gen/avx2-p5-x80.c",
1537 "src/f32-raddexpminusmax/gen/avx2-p5-x80-acc2.c",
1538 "src/f32-raddexpminusmax/gen/avx2-p5-x80-acc5.c",
1539 "src/f32-raddexpminusmax/gen/avx2-p5-x96.c",
1540 "src/f32-raddexpminusmax/gen/avx2-p5-x96-acc2.c",
1541 "src/f32-raddexpminusmax/gen/avx2-p5-x96-acc3.c",
1542 "src/f32-raddexpminusmax/gen/avx2-p5-x96-acc6.c",
1543 "src/f32-raddextexp/gen/avx2-p5-x64.c",
1544 "src/f32-raddextexp/gen/avx2-p5-x64-acc2.c",
1545 "src/f32-raddextexp/gen/avx2-p5-x64-acc4.c",
1546 "src/f32-raddextexp/gen/avx2-p5-x72.c",
1547 "src/f32-raddextexp/gen/avx2-p5-x72-acc3.c",
1548 "src/f32-raddextexp/gen/avx2-p5-x80.c",
1549 "src/f32-raddextexp/gen/avx2-p5-x80-acc2.c",
1550 "src/f32-raddextexp/gen/avx2-p5-x80-acc5.c",
1551 "src/f32-raddextexp/gen/avx2-p5-x96.c",
1552 "src/f32-raddextexp/gen/avx2-p5-x96-acc2.c",
1553 "src/f32-raddextexp/gen/avx2-p5-x96-acc3.c",
1554 "src/f32-raddextexp/gen/avx2-p5-x96-acc6.c",
1555 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x64.c",
1556 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x64-acc2.c",
1557 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x64-acc4.c",
1558 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x72.c",
1559 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x72-acc3.c",
1560 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x80.c",
1561 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x80-acc2.c",
1562 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x80-acc5.c",
1563 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x96.c",
1564 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x96-acc2.c",
1565 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x96-acc3.c",
1566 "src/f32-raddstoreexpminusmax/gen/avx2-p5-x96-acc6.c",
Marat Dukhanfa0a4322020-01-06 16:14:29 -08001567 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x8.c",
1568 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x16.c",
1569 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x24.c",
1570 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x32.c",
1571 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x40.c",
1572 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x48.c",
1573 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x56.c",
1574 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x64.c",
1575 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x72.c",
1576 "src/f32-sigmoid/gen/avx2-rr1-p5-div-x80.c",
1577 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x8.c",
1578 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x16.c",
1579 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x24.c",
1580 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x32.c",
1581 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x40.c",
1582 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x48.c",
1583 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x56.c",
1584 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x64.c",
1585 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x72.c",
1586 "src/f32-sigmoid/gen/avx2-rr1-p5-nr1fma-x80.c",
1587 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x8.c",
1588 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x16.c",
1589 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x24.c",
1590 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x32.c",
1591 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x40.c",
1592 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x48.c",
1593 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x56.c",
1594 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x64.c",
1595 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x72.c",
1596 "src/f32-sigmoid/gen/avx2-rr1-p5-nr2fma-x80.c",
Marat Dukhan4c4eb002019-12-08 21:27:49 -08001597 "src/f32-vscaleexpminusmax/gen/avx2-p5-x8.c",
1598 "src/f32-vscaleexpminusmax/gen/avx2-p5-x16.c",
1599 "src/f32-vscaleexpminusmax/gen/avx2-p5-x24.c",
1600 "src/f32-vscaleexpminusmax/gen/avx2-p5-x32.c",
1601 "src/f32-vscaleexpminusmax/gen/avx2-p5-x40.c",
1602 "src/f32-vscaleexpminusmax/gen/avx2-p5-x48.c",
1603 "src/f32-vscaleexpminusmax/gen/avx2-p5-x56.c",
1604 "src/f32-vscaleexpminusmax/gen/avx2-p5-x64.c",
1605 "src/f32-vscaleexpminusmax/gen/avx2-p5-x72.c",
1606 "src/f32-vscaleexpminusmax/gen/avx2-p5-x80.c",
1607 "src/f32-vscaleexpminusmax/gen/avx2-p5-x88.c",
1608 "src/f32-vscaleexpminusmax/gen/avx2-p5-x96.c",
1609 "src/f32-vscaleextexp/gen/avx2-p5-x8.c",
1610 "src/f32-vscaleextexp/gen/avx2-p5-x16.c",
1611 "src/f32-vscaleextexp/gen/avx2-p5-x24.c",
1612 "src/f32-vscaleextexp/gen/avx2-p5-x32.c",
1613 "src/f32-vscaleextexp/gen/avx2-p5-x40.c",
1614 "src/f32-vscaleextexp/gen/avx2-p5-x48.c",
1615 "src/f32-vscaleextexp/gen/avx2-p5-x56.c",
1616 "src/f32-vscaleextexp/gen/avx2-p5-x64.c",
1617 "src/f32-vscaleextexp/gen/avx2-p5-x72.c",
1618 "src/f32-vscaleextexp/gen/avx2-p5-x80.c",
1619 "src/f32-vscaleextexp/gen/avx2-p5-x88.c",
1620 "src/f32-vscaleextexp/gen/avx2-p5-x96.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001621 "src/math/exp-avx2-p5.c",
1622 "src/math/exp-avx2-perm-p3.c",
1623 "src/math/exp-avx2-perm-p4.c",
Marat Dukhan515c9772019-10-17 18:07:57 -07001624 "src/math/expminus-avx2-p5.c",
Marat Dukhan98ba4412019-10-23 02:14:28 -07001625 "src/math/extexp-avx2-p5.c",
Marat Dukhan72416002020-01-05 21:53:19 -08001626 "src/math/sigmoid-avx2-rr2-p5-div.c",
1627 "src/math/sigmoid-avx2-rr1-p5-div.c",
1628 "src/math/sigmoid-avx2-rr2-p5-nr2fma.c",
1629 "src/math/sigmoid-avx2-rr1-p5-nr2fma.c",
1630 "src/math/sigmoid-avx2-rr2-p5-nr1fma.c",
1631 "src/math/sigmoid-avx2-rr1-p5-nr1fma.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001632]
1633
Marat Dukhan08c4a432019-10-03 09:29:21 -07001634AVX512F_UKERNELS = [
Marat Dukhan5c5fa962020-03-10 18:38:33 -07001635 "src/f32-clamp/gen/avx512f-x16.c",
1636 "src/f32-clamp/gen/avx512f-x32.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001637 "src/f32-dwconv/gen/up32x4-minmax-avx512f-acc2.c",
1638 "src/f32-dwconv/gen/up32x4-minmax-avx512f.c",
1639 "src/f32-dwconv/gen/up16x4-minmax-avx512f-acc2.c",
1640 "src/f32-dwconv/gen/up16x4-minmax-avx512f.c",
1641 "src/f32-dwconv/gen/up32x9-minmax-avx512f-acc2.c",
1642 "src/f32-dwconv/gen/up32x9-minmax-avx512f.c",
1643 "src/f32-dwconv/gen/up16x9-minmax-avx512f-acc2.c",
1644 "src/f32-dwconv/gen/up16x9-minmax-avx512f.c",
1645 "src/f32-dwconv/gen/up32x25-minmax-avx512f-acc2.c",
1646 "src/f32-dwconv/gen/up32x25-minmax-avx512f.c",
1647 "src/f32-dwconv/gen/up16x25-minmax-avx512f-acc2.c",
1648 "src/f32-dwconv/gen/up16x25-minmax-avx512f.c",
1649 "src/f32-gemm/gen/1x16-minmax-avx512f-broadcast.c",
1650 "src/f32-gemm/gen/4x16-minmax-avx512f-broadcast.c",
1651 "src/f32-gemm/gen/5x16-minmax-avx512f-broadcast.c",
1652 "src/f32-gemm/gen/6x16-minmax-avx512f-broadcast.c",
1653 "src/f32-gemm/gen/7x16-minmax-avx512f-broadcast.c",
1654 "src/f32-gemm/gen/8x16-minmax-avx512f-broadcast.c",
1655 "src/f32-gemm/gen-inc/1x16inc-minmax-avx512f-broadcast.c",
1656 "src/f32-gemm/gen-inc/4x16inc-minmax-avx512f-broadcast.c",
1657 "src/f32-gemm/gen-inc/5x16inc-minmax-avx512f-broadcast.c",
1658 "src/f32-gemm/gen-inc/6x16inc-minmax-avx512f-broadcast.c",
1659 "src/f32-gemm/gen-inc/7x16inc-minmax-avx512f-broadcast.c",
1660 "src/f32-gemm/gen-inc/8x16inc-minmax-avx512f-broadcast.c",
Marat Dukhan662faa02019-12-09 22:48:16 -08001661 "src/f32-hswish/gen/avx512f-x16.c",
1662 "src/f32-hswish/gen/avx512f-x32.c",
Marat Dukhan1c587112020-04-08 20:04:28 -07001663 "src/f32-igemm/gen/1x16-minmax-avx512f-broadcast.c",
1664 "src/f32-igemm/gen/4x16-minmax-avx512f-broadcast.c",
1665 "src/f32-igemm/gen/5x16-minmax-avx512f-broadcast.c",
1666 "src/f32-igemm/gen/6x16-minmax-avx512f-broadcast.c",
1667 "src/f32-igemm/gen/7x16-minmax-avx512f-broadcast.c",
1668 "src/f32-igemm/gen/8x16-minmax-avx512f-broadcast.c",
Marat Dukhan90eca0a2020-03-11 00:52:23 -07001669 "src/f32-prelu/gen/avx512f-2x16.c",
1670 "src/f32-prelu/gen/avx512f-2x32.c",
Marat Dukhan4c4eb002019-12-08 21:27:49 -08001671 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x128.c",
1672 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x128-acc2.c",
1673 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x128-acc4.c",
1674 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x144.c",
1675 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x144-acc3.c",
1676 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x160.c",
1677 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x160-acc2.c",
1678 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x160-acc5.c",
1679 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x192.c",
1680 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x192-acc2.c",
1681 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x192-acc3.c",
1682 "src/f32-raddexpminusmax/gen/avx512f-p5-scalef-x192-acc6.c",
1683 "src/f32-raddextexp/gen/avx512f-p5-scalef-x128.c",
1684 "src/f32-raddextexp/gen/avx512f-p5-scalef-x128-acc2.c",
1685 "src/f32-raddextexp/gen/avx512f-p5-scalef-x128-acc4.c",
1686 "src/f32-raddextexp/gen/avx512f-p5-scalef-x144.c",
1687 "src/f32-raddextexp/gen/avx512f-p5-scalef-x144-acc3.c",
1688 "src/f32-raddextexp/gen/avx512f-p5-scalef-x160.c",
1689 "src/f32-raddextexp/gen/avx512f-p5-scalef-x160-acc2.c",
1690 "src/f32-raddextexp/gen/avx512f-p5-scalef-x160-acc5.c",
1691 "src/f32-raddextexp/gen/avx512f-p5-scalef-x192.c",
1692 "src/f32-raddextexp/gen/avx512f-p5-scalef-x192-acc2.c",
1693 "src/f32-raddextexp/gen/avx512f-p5-scalef-x192-acc3.c",
1694 "src/f32-raddextexp/gen/avx512f-p5-scalef-x192-acc6.c",
1695 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x128.c",
1696 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x128-acc2.c",
1697 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x128-acc4.c",
1698 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x144.c",
1699 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x144-acc3.c",
1700 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x160.c",
1701 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x160-acc2.c",
1702 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x160-acc5.c",
1703 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x192.c",
1704 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x192-acc2.c",
1705 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x192-acc3.c",
1706 "src/f32-raddstoreexpminusmax/gen/avx512f-p5-scalef-x192-acc6.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001707 "src/f32-rmax/avx512f.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001708 "src/f32-vbinary/gen/vadd-minmax-avx512f-x16.c",
1709 "src/f32-vbinary/gen/vadd-minmax-avx512f-x32.c",
1710 "src/f32-vbinary/gen/vaddc-minmax-avx512f-x16.c",
1711 "src/f32-vbinary/gen/vaddc-minmax-avx512f-x32.c",
1712 "src/f32-vbinary/gen/vdiv-minmax-avx512f-x16.c",
1713 "src/f32-vbinary/gen/vdiv-minmax-avx512f-x32.c",
1714 "src/f32-vbinary/gen/vdivc-minmax-avx512f-x16.c",
1715 "src/f32-vbinary/gen/vdivc-minmax-avx512f-x32.c",
Marat Dukhan9a88efe2019-12-10 15:54:24 -08001716 "src/f32-vbinary/gen/vmax-avx512f-x16.c",
1717 "src/f32-vbinary/gen/vmax-avx512f-x32.c",
1718 "src/f32-vbinary/gen/vmaxc-avx512f-x16.c",
1719 "src/f32-vbinary/gen/vmaxc-avx512f-x32.c",
1720 "src/f32-vbinary/gen/vmin-avx512f-x16.c",
1721 "src/f32-vbinary/gen/vmin-avx512f-x32.c",
1722 "src/f32-vbinary/gen/vminc-avx512f-x16.c",
1723 "src/f32-vbinary/gen/vminc-avx512f-x32.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001724 "src/f32-vbinary/gen/vmul-minmax-avx512f-x16.c",
1725 "src/f32-vbinary/gen/vmul-minmax-avx512f-x32.c",
1726 "src/f32-vbinary/gen/vmulc-minmax-avx512f-x16.c",
1727 "src/f32-vbinary/gen/vmulc-minmax-avx512f-x32.c",
1728 "src/f32-vbinary/gen/vrdivc-minmax-avx512f-x16.c",
1729 "src/f32-vbinary/gen/vrdivc-minmax-avx512f-x32.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001730 "src/f32-vbinary/gen/vrsqrdiffc-avx512f-x16.c",
1731 "src/f32-vbinary/gen/vrsqrdiffc-avx512f-x32.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001732 "src/f32-vbinary/gen/vrsubc-minmax-avx512f-x16.c",
1733 "src/f32-vbinary/gen/vrsubc-minmax-avx512f-x32.c",
Marat Dukhan13bafb02020-06-05 00:43:11 -07001734 "src/f32-vbinary/gen/vsqrdiff-avx512f-x16.c",
1735 "src/f32-vbinary/gen/vsqrdiff-avx512f-x32.c",
1736 "src/f32-vbinary/gen/vsqrdiffc-avx512f-x16.c",
1737 "src/f32-vbinary/gen/vsqrdiffc-avx512f-x32.c",
Marat Dukhan91cd2b72020-04-09 23:57:31 -07001738 "src/f32-vbinary/gen/vsub-minmax-avx512f-x16.c",
1739 "src/f32-vbinary/gen/vsub-minmax-avx512f-x32.c",
1740 "src/f32-vbinary/gen/vsubc-minmax-avx512f-x16.c",
1741 "src/f32-vbinary/gen/vsubc-minmax-avx512f-x32.c",
Marat Dukhan05ac8e32019-10-21 15:39:33 -07001742 "src/f32-vscale/avx512f-unroll64.c",
Marat Dukhan4c4eb002019-12-08 21:27:49 -08001743 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x16.c",
1744 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x32.c",
1745 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x48.c",
1746 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x64.c",
1747 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x80.c",
1748 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x96.c",
1749 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x112.c",
1750 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x128.c",
1751 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x144.c",
1752 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x160.c",
1753 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x176.c",
1754 "src/f32-vscaleexpminusmax/gen/avx512f-p5-scalef-x192.c",
1755 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x16.c",
1756 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x32.c",
1757 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x48.c",
1758 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x64.c",
1759 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x80.c",
1760 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x96.c",
1761 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x112.c",
1762 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x128.c",
1763 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x144.c",
1764 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x160.c",
1765 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x176.c",
1766 "src/f32-vscaleextexp/gen/avx512f-p5-scalef-x192.c",
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07001767 "src/f32-vrnd/gen/vrndne-avx512f-x16.c",
1768 "src/f32-vrnd/gen/vrndne-avx512f-x32.c",
1769 "src/f32-vrnd/gen/vrndz-avx512f-x16.c",
1770 "src/f32-vrnd/gen/vrndz-avx512f-x32.c",
1771 "src/f32-vrnd/gen/vrndu-avx512f-x16.c",
1772 "src/f32-vrnd/gen/vrndu-avx512f-x32.c",
1773 "src/f32-vrnd/gen/vrndd-avx512f-x16.c",
1774 "src/f32-vrnd/gen/vrndd-avx512f-x32.c",
Marat Dukhan5020b962020-06-08 13:30:10 -07001775 "src/f32-vunary/gen/vabs-avx512f-x16.c",
1776 "src/f32-vunary/gen/vabs-avx512f-x32.c",
1777 "src/f32-vunary/gen/vneg-avx512f-x16.c",
1778 "src/f32-vunary/gen/vneg-avx512f-x32.c",
1779 "src/f32-vunary/gen/vsqr-avx512f-x16.c",
1780 "src/f32-vunary/gen/vsqr-avx512f-x32.c",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001781 "src/math/exp-avx512f-p5-scalef.c",
1782 "src/math/exp-avx512f-p5.c",
1783 "src/math/exp-avx512f-perm-p3.c",
Marat Dukhanfeb49232019-10-28 11:03:31 -07001784 "src/math/exp-avx512f-perm2-p2.c",
Marat Dukhan98ba4412019-10-23 02:14:28 -07001785 "src/math/extexp-avx512f-p5.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001786]
1787
1788AARCH32_ASM_UKERNELS = [
Marat Dukhan32f93812020-05-17 20:31:21 -07001789 "src/f32-gemm/4x4-aarch32-vfp-ld64.S",
Marat Dukhan3b98f6b2020-05-17 10:09:22 -07001790 "src/f32-gemm/4x4-minmax-aarch32-vfp-ld64.S",
Marat Dukhan1c587112020-04-08 20:04:28 -07001791 "src/f32-gemm/4x8-minmax-aarch32-neon-cortex-a53.S",
1792 "src/f32-gemm/4x8-minmax-aarch32-neon-cortex-a55.S",
1793 "src/f32-gemm/gen/4x8-minmax-aarch32-neon-cortex-a75.S",
1794 "src/f32-gemm/gen/4x8-minmax-aarch32-neon-pld-cortex-a75.S",
1795 "src/f32-gemm/4x8-minmax-aarch32-neon-ld64.S",
1796 "src/f32-igemm/4x8-minmax-aarch32-neon-ld64.S",
1797 "src/f32-igemm/gen/4x8-minmax-aarch32-neon-cortex-a75.S",
1798 "src/f32-igemm/gen/4x8-minmax-aarch32-neon-pld-cortex-a75.S",
1799 "src/f32-igemm/4x8-minmax-aarch32-neon-cortex-a53.S",
1800 "src/f32-igemm/4x8-minmax-aarch32-neon-cortex-a55.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001801]
1802
1803AARCH64_ASM_UKERNELS = [
Frank Barchard36b76b62020-04-10 12:39:17 -07001804 "src/f16-gemm/gen/1x16-minmax-aarch64-neonfp16arith-ld32.S",
Frank Barchard683f5592020-04-10 00:48:26 -07001805 "src/f16-gemm/gen/4x16-minmax-aarch64-neonfp16arith-ld32.S",
1806 "src/f16-gemm/gen/6x16-minmax-aarch64-neonfp16arith-ld32.S",
Frank Barchard36b76b62020-04-10 12:39:17 -07001807 "src/f16-gemm/gen-inc/1x16inc-minmax-aarch64-neonfp16arith-ld32.S",
Frank Barchard683f5592020-04-10 00:48:26 -07001808 "src/f16-gemm/gen-inc/4x16inc-minmax-aarch64-neonfp16arith-ld32.S",
1809 "src/f16-gemm/gen-inc/6x16inc-minmax-aarch64-neonfp16arith-ld32.S",
Frank Barchardbddfbcd2020-04-15 12:32:41 -07001810 "src/f16-gemm/gen/1x8-minmax-aarch64-neonfp16arith-ld64.S",
1811 "src/f16-gemm/gen/4x8-minmax-aarch64-neonfp16arith-ld64.S",
1812 "src/f16-gemm/gen/6x8-minmax-aarch64-neonfp16arith-ld64.S",
Frank Barchard3b8e5662020-04-20 12:12:53 -07001813 "src/f16-gemm/gen/8x8-minmax-aarch64-neonfp16arith-ld64.S",
Frank Barchardbddfbcd2020-04-15 12:32:41 -07001814 "src/f16-gemm/gen-inc/1x8inc-minmax-aarch64-neonfp16arith-ld64.S",
1815 "src/f16-gemm/gen-inc/4x8inc-minmax-aarch64-neonfp16arith-ld64.S",
1816 "src/f16-gemm/gen-inc/6x8inc-minmax-aarch64-neonfp16arith-ld64.S",
Frank Barchard3b8e5662020-04-20 12:12:53 -07001817 "src/f16-gemm/gen-inc/8x8inc-minmax-aarch64-neonfp16arith-ld64.S",
Marat Dukhan1c587112020-04-08 20:04:28 -07001818 "src/f32-dwconv/up4x9-minmax-aarch64-neonfma-cortex-a55.S",
1819 "src/f32-dwconv/up4x9-minmax-aarch64-neonfma.S",
Frank Barchard3cb54f92020-04-10 10:46:08 -07001820 "src/f32-gemm/gen/1x8-minmax-aarch64-neonfma-ld64.S",
Marat Dukhan1c587112020-04-08 20:04:28 -07001821 "src/f32-gemm/gen/1x12-minmax-aarch64-neonfma-cortex-a53.S",
1822 "src/f32-gemm/gen/1x8-minmax-aarch64-neonfma-cortex-a53.S",
1823 "src/f32-gemm/gen/1x8-minmax-aarch64-neonfma-cortex-a57.S",
1824 "src/f32-gemm/gen/1x8-minmax-aarch64-neonfma-cortex-a75.S",
1825 "src/f32-gemm/gen/4x12-minmax-aarch64-neonfma-cortex-a53.S",
1826 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-cortex-a53.S",
1827 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-cortex-a55.S",
1828 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-cortex-a57.S",
1829 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-cortex-a75.S",
1830 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-ld128.S",
1831 "src/f32-gemm/gen/4x8-minmax-aarch64-neonfma-ld64.S",
1832 "src/f32-gemm/gen/5x8-minmax-aarch64-neonfma-cortex-a57.S",
1833 "src/f32-gemm/gen/5x8-minmax-aarch64-neonfma-cortex-a75.S",
1834 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a53.S",
1835 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a55.S",
1836 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a73.S",
1837 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a57.S",
1838 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-cortex-a75.S",
1839 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-ios.S",
1840 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-ld128.S",
1841 "src/f32-gemm/gen/6x8-minmax-aarch64-neonfma-ld64.S",
Frank Barchard3cb54f92020-04-10 10:46:08 -07001842 "src/f32-gemm/gen-inc/1x8inc-minmax-aarch64-neonfma-ld64.S",
Marat Dukhan1c587112020-04-08 20:04:28 -07001843 "src/f32-gemm/gen-inc/1x12inc-minmax-aarch64-neonfma-cortex-a53.S",
1844 "src/f32-gemm/gen-inc/1x8inc-minmax-aarch64-neonfma-cortex-a53.S",
1845 "src/f32-gemm/gen-inc/1x8inc-minmax-aarch64-neonfma-cortex-a57.S",
1846 "src/f32-gemm/gen-inc/1x8inc-minmax-aarch64-neonfma-cortex-a75.S",
1847 "src/f32-gemm/gen-inc/4x12inc-minmax-aarch64-neonfma-cortex-a53.S",
1848 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-cortex-a53.S",
1849 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-cortex-a55.S",
1850 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-cortex-a57.S",
1851 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-cortex-a75.S",
1852 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-ld128.S",
1853 "src/f32-gemm/gen-inc/4x8inc-minmax-aarch64-neonfma-ld64.S",
1854 "src/f32-gemm/gen-inc/5x8inc-minmax-aarch64-neonfma-cortex-a57.S",
1855 "src/f32-gemm/gen-inc/5x8inc-minmax-aarch64-neonfma-cortex-a75.S",
1856 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a53.S",
1857 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a55.S",
1858 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a73.S",
1859 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a57.S",
1860 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-cortex-a75.S",
1861 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-ios.S",
1862 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-ld128.S",
1863 "src/f32-gemm/gen-inc/6x8inc-minmax-aarch64-neonfma-ld64.S",
1864 "src/f32-igemm/1x12-minmax-aarch64-neonfma-cortex-a53.S",
1865 "src/f32-igemm/1x8-minmax-aarch64-neonfma-cortex-a53.S",
1866 "src/f32-igemm/gen/1x8-minmax-aarch64-neonfma-cortex-a57.S",
1867 "src/f32-igemm/gen/1x8-minmax-aarch64-neonfma-cortex-a75.S",
1868 "src/f32-igemm/4x12-minmax-aarch64-neonfma-cortex-a53.S",
1869 "src/f32-igemm/4x8-minmax-aarch64-neonfma-cortex-a53.S",
1870 "src/f32-igemm/4x8-minmax-aarch64-neonfma-cortex-a55.S",
1871 "src/f32-igemm/gen/4x8-minmax-aarch64-neonfma-cortex-a57.S",
1872 "src/f32-igemm/gen/4x8-minmax-aarch64-neonfma-cortex-a75.S",
1873 "src/f32-igemm/gen/5x8-minmax-aarch64-neonfma-cortex-a57.S",
1874 "src/f32-igemm/gen/5x8-minmax-aarch64-neonfma-cortex-a75.S",
1875 "src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a53.S",
1876 "src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a55.S",
1877 "src/f32-igemm/6x8-minmax-aarch64-neonfma-cortex-a73.S",
1878 "src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a57.S",
1879 "src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-cortex-a75.S",
1880 "src/f32-igemm/gen/6x8-minmax-aarch64-neonfma-ios.S",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001881]
1882
Marat Dukhan1b354632020-03-23 12:50:22 -07001883INTERNAL_MICROKERNEL_HDRS = [
Marat Dukhanfe7acb62020-03-09 19:30:05 -07001884 "src/requantization/gemmlowp-requantization.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001885 "src/xnnpack/argmaxpool.h",
1886 "src/xnnpack/avgpool.h",
1887 "src/xnnpack/clamp.h",
1888 "src/xnnpack/common.h",
1889 "src/xnnpack/conv.h",
1890 "src/xnnpack/dwconv.h",
1891 "src/xnnpack/gavgpool.h",
1892 "src/xnnpack/gemm.h",
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -07001893 "src/xnnpack/fill.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001894 "src/xnnpack/hswish.h",
Marat Dukhan660fd192020-03-10 04:55:30 -07001895 "src/xnnpack/ibilinear.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001896 "src/xnnpack/igemm.h",
Marat Dukhancfb31342019-12-05 10:42:57 -08001897 "src/xnnpack/intrinsics-polyfill.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001898 "src/xnnpack/lut.h",
1899 "src/xnnpack/math.h",
1900 "src/xnnpack/maxpool.h",
Marat Dukhan04f03be2019-11-19 12:36:47 -08001901 "src/xnnpack/memory.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001902 "src/xnnpack/packx.h",
1903 "src/xnnpack/pad.h",
1904 "src/xnnpack/params.h",
1905 "src/xnnpack/pavgpool.h",
1906 "src/xnnpack/ppmm.h",
1907 "src/xnnpack/prelu.h",
Marat Dukhan97579532019-10-18 16:40:39 -07001908 "src/xnnpack/raddexpminusmax.h",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07001909 "src/xnnpack/raddextexp.h",
Marat Dukhan97579532019-10-18 16:40:39 -07001910 "src/xnnpack/raddstoreexpminusmax.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001911 "src/xnnpack/rmax.h",
1912 "src/xnnpack/scalar-utils.h",
1913 "src/xnnpack/spmm.h",
1914 "src/xnnpack/unpool.h",
1915 "src/xnnpack/vadd.h",
Marat Dukhan1e782c42019-11-21 17:02:40 -08001916 "src/xnnpack/vbinary.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001917 "src/xnnpack/vmulcaddc.h",
Marat Dukhan05ac8e32019-10-21 15:39:33 -07001918 "src/xnnpack/vscale.h",
Marat Dukhan97579532019-10-18 16:40:39 -07001919 "src/xnnpack/vscaleexpminusmax.h",
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07001920 "src/xnnpack/vscaleextexp.h",
Marat Dukhan1e782c42019-11-21 17:02:40 -08001921 "src/xnnpack/vunary.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001922 "src/xnnpack/zip.h",
Marat Dukhan1b354632020-03-23 12:50:22 -07001923]
1924
1925INTERNAL_HDRS = INTERNAL_MICROKERNEL_HDRS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -07001926 "include/xnnpack.h",
1927 "src/xnnpack/allocator.h",
1928 "src/xnnpack/compute.h",
1929 "src/xnnpack/im2col.h",
1930 "src/xnnpack/indirection.h",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001931 "src/xnnpack/math-stubs.h",
Chao Mei6ddfc602020-05-13 22:29:36 -07001932 "src/xnnpack/memory-planner.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001933 "src/xnnpack/operator.h",
1934 "src/xnnpack/pack.h",
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -07001935 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001936 "src/xnnpack/requantization-stubs.h",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001937 "src/xnnpack/requantization.h",
Marat Dukhan1d75a542020-02-03 12:23:01 -08001938 "src/xnnpack/subgraph.h",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001939]
1940
Marat Dukhan1b354632020-03-23 12:50:22 -07001941ACCURACY_EVAL_HDRS = INTERNAL_MICROKERNEL_HDRS + [
Marat Dukhan6adff4e2019-10-14 18:32:07 -07001942 "src/xnnpack/math-stubs.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001943]
1944
Marat Dukhan1b354632020-03-23 12:50:22 -07001945MICROKERNEL_BENCHMARK_HDRS = INTERNAL_MICROKERNEL_HDRS + [
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -07001946 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001947 "include/xnnpack.h",
1948]
1949
Marat Dukhan1b354632020-03-23 12:50:22 -07001950MICROKERNEL_TEST_HDRS = INTERNAL_MICROKERNEL_HDRS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -07001951 "src/xnnpack/isa-checks.h",
Marat Dukhaneeaa7bd2019-10-25 17:31:25 -07001952 "src/xnnpack/params-init.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07001953 "src/xnnpack/requantization.h",
1954 "include/xnnpack.h",
1955]
1956
1957OPERATOR_TEST_PARAMS_HDRS = [
1958 "src/xnnpack/params.h",
1959 "src/xnnpack/common.h",
1960]
1961
1962WEIGHTS_PACK_HDRS = [
1963 "src/xnnpack/pack.h",
1964 "src/xnnpack/operator.h",
1965 "src/xnnpack/compute.h",
1966]
1967
Marat Dukhanc8e00eb2019-10-04 14:55:26 -07001968LOGGING_COPTS = select({
1969 # No logging in optimized mode
1970 ":optimized_build": ["-DXNN_LOG_LEVEL=0"],
1971 # Full logging in debug mode
1972 ":debug_build": ["-DXNN_LOG_LEVEL=5"],
1973 # Error-only logging in default (fastbuild) mode
1974 "//conditions:default": ["-DXNN_LOG_LEVEL=2"],
1975})
1976
Marat Dukhan3b59de22020-06-03 20:15:19 -07001977LOGGING_SRCS = select({
1978 # No logging in optimized mode
1979 ":optimized_build": [],
1980 "//conditions:default": [
1981 "src/operator-strings.c",
1982 "src/subgraph-strings.c",
1983 ],
1984})
1985
Marat Dukhanc8e00eb2019-10-04 14:55:26 -07001986LOGGING_HDRS = [
1987 "src/xnnpack/log.h",
1988]
1989
Marat Dukhan08c4a432019-10-03 09:29:21 -07001990xnnpack_cc_library(
Marat Dukhan3a77ea72019-12-23 12:10:24 -08001991 name = "tables",
1992 srcs = TABLE_SRCS,
1993 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07001994 gcc_copts = xnnpack_gcc_std_copts(),
1995 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan3a77ea72019-12-23 12:10:24 -08001996)
1997
1998xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07001999 name = "scalar_ukernels",
2000 srcs = SCALAR_UKERNELS,
2001 hdrs = INTERNAL_HDRS,
2002 aarch32_copts = ["-marm"],
Marat Dukhan10a38082020-04-17 03:58:35 -07002003 gcc_copts = xnnpack_gcc_std_copts(),
2004 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002005 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002006 ":tables",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002007 "@FP16",
2008 "@FXdiv",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002009 "@pthreadpool",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002010 ],
2011)
2012
2013xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002014 name = "scalar_ukernels_test_mode",
2015 srcs = SCALAR_UKERNELS,
2016 hdrs = INTERNAL_HDRS,
2017 aarch32_copts = ["-marm"],
2018 copts = [
2019 "-UNDEBUG",
2020 "-DXNN_TEST_MODE=1",
2021 ],
2022 gcc_copts = xnnpack_gcc_std_copts(),
2023 msvc_copts = xnnpack_msvc_std_copts(),
2024 deps = [
2025 ":tables",
2026 "@FP16",
2027 "@FXdiv",
2028 "@pthreadpool",
2029 ],
2030)
2031
2032xnnpack_cc_library(
Marat Dukhan436ebe62019-12-04 15:10:12 -08002033 name = "wasm_ukernels",
2034 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002035 gcc_copts = xnnpack_gcc_std_copts(),
2036 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan436ebe62019-12-04 15:10:12 -08002037 wasm_srcs = WASM_UKERNELS,
Marat Dukhan290055c2020-06-09 12:24:29 -07002038 wasmsimd_srcs = WASMSIMD_UKERNELS,
Marat Dukhan436ebe62019-12-04 15:10:12 -08002039 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002040 ":tables",
Marat Dukhan436ebe62019-12-04 15:10:12 -08002041 "@FP16",
2042 "@FXdiv",
2043 "@pthreadpool",
2044 ],
2045)
2046
2047xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002048 name = "wasm_ukernels_test_mode",
2049 hdrs = INTERNAL_HDRS,
2050 copts = [
2051 "-UNDEBUG",
2052 "-DXNN_TEST_MODE=1",
2053 ],
2054 gcc_copts = xnnpack_gcc_std_copts(),
2055 msvc_copts = xnnpack_msvc_std_copts(),
2056 wasm_srcs = WASM_UKERNELS,
Marat Dukhan290055c2020-06-09 12:24:29 -07002057 wasmsimd_srcs = WASMSIMD_UKERNELS,
Marat Dukhan33fcf782020-05-24 14:27:15 -07002058 deps = [
2059 ":tables",
2060 "@FP16",
2061 "@FXdiv",
2062 "@pthreadpool",
2063 ],
2064)
2065
2066xnnpack_cc_library(
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002067 name = "psimd_fastmath_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002068 hdrs = INTERNAL_HDRS,
2069 aarch32_copts = [
2070 "-marm",
2071 "-mfpu=neon",
2072 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002073 gcc_copts = xnnpack_gcc_std_copts(),
2074 gcc_x86_copts = ["-msse2"],
2075 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002076 optimized_copts = [
2077 "-O3",
2078 "-ffast-math",
2079 ],
Marat Dukhan500b8892020-04-15 17:09:50 -07002080 psimd_srcs = PSIMD_FASTMATH_UKERNELS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07002081 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002082 ":tables",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002083 "@FP16",
2084 "@psimd",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002085 "@pthreadpool",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002086 ],
2087)
2088
2089xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002090 name = "psimd_fastmath_ukernels_test_mode",
2091 hdrs = INTERNAL_HDRS,
2092 aarch32_copts = [
2093 "-marm",
2094 "-mfpu=neon",
2095 ],
2096 copts = [
2097 "-UNDEBUG",
2098 "-DXNN_TEST_MODE=1",
2099 ],
2100 gcc_copts = xnnpack_gcc_std_copts(),
2101 gcc_x86_copts = ["-msse2"],
2102 msvc_copts = xnnpack_msvc_std_copts(),
2103 optimized_copts = [
2104 "-O3",
2105 "-ffast-math",
2106 ],
2107 psimd_srcs = PSIMD_FASTMATH_UKERNELS,
2108 deps = [
2109 ":tables",
2110 "@FP16",
2111 "@psimd",
2112 "@pthreadpool",
2113 ],
2114)
2115
2116xnnpack_cc_library(
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002117 name = "psimd_accmath_ukernels",
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002118 hdrs = INTERNAL_HDRS,
2119 aarch32_copts = [
2120 "-marm",
2121 "-mfpu=neon",
2122 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002123 gcc_copts = xnnpack_gcc_std_copts(),
2124 gcc_x86_copts = ["-msse2"],
2125 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002126 optimized_copts = [
2127 "-O3",
2128 ],
Marat Dukhan500b8892020-04-15 17:09:50 -07002129 psimd_srcs = PSIMD_ACCMATH_UKERNELS,
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002130 deps = [
2131 ":tables",
2132 "@FP16",
2133 "@psimd",
2134 "@pthreadpool",
2135 ],
2136)
2137
2138xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002139 name = "psimd_accmath_ukernels_test_mode",
2140 hdrs = INTERNAL_HDRS,
2141 aarch32_copts = [
2142 "-marm",
2143 "-mfpu=neon",
2144 ],
2145 copts = [
2146 "-UNDEBUG",
2147 "-DXNN_TEST_MODE=1",
2148 ],
2149 gcc_copts = xnnpack_gcc_std_copts(),
2150 gcc_x86_copts = ["-msse2"],
2151 msvc_copts = xnnpack_msvc_std_copts(),
2152 optimized_copts = [
2153 "-O3",
2154 ],
2155 psimd_srcs = PSIMD_ACCMATH_UKERNELS,
2156 deps = [
2157 ":tables",
2158 "@FP16",
2159 "@psimd",
2160 "@pthreadpool",
2161 ],
2162)
2163
2164xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002165 name = "neon_ukernels",
2166 hdrs = INTERNAL_HDRS,
2167 aarch32_copts = [
2168 "-marm",
Marat Dukhan8853b822020-05-07 12:19:01 -07002169 "-march=armv7-a",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002170 "-mfpu=neon",
2171 ],
2172 aarch32_srcs = NEON_UKERNELS,
2173 aarch64_srcs = NEON_UKERNELS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002174 gcc_copts = xnnpack_gcc_std_copts(),
2175 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan04f03be2019-11-19 12:36:47 -08002176 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002177 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002178 "@FP16",
2179 "@pthreadpool",
2180 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002181)
2182
2183xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002184 name = "neon_ukernels_test_mode",
2185 hdrs = INTERNAL_HDRS,
2186 aarch32_copts = [
2187 "-marm",
2188 "-march=armv7-a",
2189 "-mfpu=neon",
2190 ],
2191 aarch32_srcs = NEON_UKERNELS,
2192 aarch64_srcs = NEON_UKERNELS,
2193 copts = [
2194 "-UNDEBUG",
2195 "-DXNN_TEST_MODE=1",
2196 ],
2197 gcc_copts = xnnpack_gcc_std_copts(),
2198 msvc_copts = xnnpack_msvc_std_copts(),
2199 deps = [
2200 ":tables",
2201 "@FP16",
2202 "@pthreadpool",
2203 ],
2204)
2205
2206xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002207 name = "neonfma_ukernels",
2208 hdrs = INTERNAL_HDRS,
2209 aarch32_copts = [
2210 "-marm",
Marat Dukhan8853b822020-05-07 12:19:01 -07002211 "-march=armv7-a",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002212 "-mfpu=neon-vfpv4",
2213 ],
2214 aarch32_srcs = NEONFMA_UKERNELS,
2215 aarch64_srcs = NEONFMA_UKERNELS + AARCH64_NEONFMA_UKERNELS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002216 gcc_copts = xnnpack_gcc_std_copts(),
2217 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan04f03be2019-11-19 12:36:47 -08002218 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002219 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002220 "@FP16",
2221 "@pthreadpool",
2222 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002223)
2224
2225xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002226 name = "neonfma_ukernels_test_mode",
2227 hdrs = INTERNAL_HDRS,
2228 aarch32_copts = [
2229 "-marm",
2230 "-march=armv7-a",
2231 "-mfpu=neon-vfpv4",
2232 ],
2233 aarch32_srcs = NEONFMA_UKERNELS,
2234 aarch64_srcs = NEONFMA_UKERNELS + AARCH64_NEONFMA_UKERNELS,
2235 copts = [
2236 "-UNDEBUG",
2237 "-DXNN_TEST_MODE=1",
2238 ],
2239 gcc_copts = xnnpack_gcc_std_copts(),
2240 msvc_copts = xnnpack_msvc_std_copts(),
2241 deps = [
2242 ":tables",
2243 "@FP16",
2244 "@pthreadpool",
2245 ],
2246)
2247
2248xnnpack_cc_library(
Marat Dukhan8853b822020-05-07 12:19:01 -07002249 name = "neonv8_ukernels",
2250 hdrs = INTERNAL_HDRS,
2251 aarch32_copts = [
2252 "-marm",
2253 "-march=armv8-a",
2254 "-mfpu=neon-fp-armv8",
2255 ],
2256 aarch32_srcs = NEONV8_UKERNELS,
2257 aarch64_srcs = NEONV8_UKERNELS,
2258 gcc_copts = xnnpack_gcc_std_copts(),
2259 msvc_copts = xnnpack_msvc_std_copts(),
2260 deps = [
2261 ":tables",
2262 "@FP16",
2263 "@pthreadpool",
2264 ],
2265)
2266
2267xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002268 name = "neonv8_ukernels_test_mode",
2269 hdrs = INTERNAL_HDRS,
2270 aarch32_copts = [
2271 "-marm",
2272 "-march=armv8-a",
2273 "-mfpu=neon-fp-armv8",
2274 ],
2275 aarch32_srcs = NEONV8_UKERNELS,
2276 aarch64_srcs = NEONV8_UKERNELS,
2277 copts = [
2278 "-UNDEBUG",
2279 "-DXNN_TEST_MODE=1",
2280 ],
2281 gcc_copts = xnnpack_gcc_std_copts(),
2282 msvc_copts = xnnpack_msvc_std_copts(),
2283 deps = [
2284 ":tables",
2285 "@FP16",
2286 "@pthreadpool",
2287 ],
2288)
2289
2290xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002291 name = "neonfp16arith_ukernels",
2292 hdrs = INTERNAL_HDRS,
2293 aarch64_copts = ["-march=armv8.2-a+fp16"],
2294 aarch64_srcs = AARCH64_NEONFP16ARITH_UKERNELS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002295 gcc_copts = xnnpack_gcc_std_copts(),
2296 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan04f03be2019-11-19 12:36:47 -08002297 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002298 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002299 "@FP16",
2300 "@pthreadpool",
2301 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002302)
2303
2304xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002305 name = "neonfp16arith_ukernels_test_mode",
2306 hdrs = INTERNAL_HDRS,
2307 aarch64_copts = ["-march=armv8.2-a+fp16"],
2308 aarch64_srcs = AARCH64_NEONFP16ARITH_UKERNELS,
2309 copts = [
2310 "-UNDEBUG",
2311 "-DXNN_TEST_MODE=1",
2312 ],
2313 gcc_copts = xnnpack_gcc_std_copts(),
2314 msvc_copts = xnnpack_msvc_std_copts(),
2315 deps = [
2316 ":tables",
2317 "@FP16",
2318 "@pthreadpool",
2319 ],
2320)
2321
2322xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002323 name = "sse2_ukernels",
2324 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002325 gcc_copts = xnnpack_gcc_std_copts(),
2326 gcc_x86_copts = ["-msse2"],
2327 msvc_copts = xnnpack_msvc_std_copts(),
2328 msvc_x86_32_copts = ["/arch:SSE2"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002329 x86_srcs = SSE_UKERNELS + SSE2_UKERNELS,
Marat Dukhan04f03be2019-11-19 12:36:47 -08002330 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002331 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002332 "@FP16",
2333 "@pthreadpool",
2334 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002335)
2336
2337xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002338 name = "sse2_ukernels_test_mode",
2339 hdrs = INTERNAL_HDRS,
2340 copts = [
2341 "-UNDEBUG",
2342 "-DXNN_TEST_MODE=1",
2343 ],
2344 gcc_copts = xnnpack_gcc_std_copts(),
2345 gcc_x86_copts = ["-msse2"],
2346 msvc_copts = xnnpack_msvc_std_copts(),
2347 msvc_x86_32_copts = ["/arch:SSE2"],
2348 x86_srcs = SSE_UKERNELS + SSE2_UKERNELS,
2349 deps = [
2350 ":tables",
2351 "@FP16",
2352 "@pthreadpool",
2353 ],
2354)
2355
2356xnnpack_cc_library(
Marat Dukhanfe7acb62020-03-09 19:30:05 -07002357 name = "ssse3_ukernels",
2358 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002359 gcc_copts = xnnpack_gcc_std_copts(),
2360 gcc_x86_copts = ["-mssse3"],
2361 msvc_copts = xnnpack_msvc_std_copts(),
2362 msvc_x86_32_copts = ["/arch:SSE2"],
Marat Dukhanfe7acb62020-03-09 19:30:05 -07002363 x86_srcs = SSSE3_UKERNELS,
2364 deps = [
2365 ":tables",
2366 "@FP16",
2367 "@pthreadpool",
2368 ],
2369)
2370
2371xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002372 name = "ssse3_ukernels_test_mode",
2373 hdrs = INTERNAL_HDRS,
2374 copts = [
2375 "-UNDEBUG",
2376 "-DXNN_TEST_MODE=1",
2377 ],
2378 gcc_copts = xnnpack_gcc_std_copts(),
2379 gcc_x86_copts = ["-mssse3"],
2380 msvc_copts = xnnpack_msvc_std_copts(),
2381 msvc_x86_32_copts = ["/arch:SSE2"],
2382 x86_srcs = SSSE3_UKERNELS,
2383 deps = [
2384 ":tables",
2385 "@FP16",
2386 "@pthreadpool",
2387 ],
2388)
2389
2390xnnpack_cc_library(
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08002391 name = "sse41_ukernels",
2392 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002393 gcc_copts = xnnpack_gcc_std_copts(),
2394 gcc_x86_copts = ["-msse4.1"],
2395 msvc_copts = xnnpack_msvc_std_copts(),
2396 msvc_x86_32_copts = ["/arch:SSE2"],
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08002397 x86_srcs = SSE41_UKERNELS,
Marat Dukhan04f03be2019-11-19 12:36:47 -08002398 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002399 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002400 "@FP16",
2401 "@pthreadpool",
2402 ],
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08002403)
2404
2405xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002406 name = "sse41_ukernels_test_mode",
2407 hdrs = INTERNAL_HDRS,
2408 copts = [
2409 "-UNDEBUG",
2410 "-DXNN_TEST_MODE=1",
2411 ],
2412 gcc_copts = xnnpack_gcc_std_copts(),
2413 gcc_x86_copts = ["-msse4.1"],
2414 msvc_copts = xnnpack_msvc_std_copts(),
2415 msvc_x86_32_copts = ["/arch:SSE2"],
2416 x86_srcs = SSE41_UKERNELS,
2417 deps = [
2418 ":tables",
2419 "@FP16",
2420 "@pthreadpool",
2421 ],
2422)
2423
2424xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002425 name = "avx_ukernels",
2426 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002427 gcc_copts = xnnpack_gcc_std_copts(),
2428 gcc_x86_copts = ["-mavx"],
2429 msvc_copts = xnnpack_msvc_std_copts(),
2430 msvc_x86_32_copts = ["/arch:AVX"],
2431 msvc_x86_64_copts = ["/arch:AVX"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002432 x86_srcs = AVX_UKERNELS,
Marat Dukhan04f03be2019-11-19 12:36:47 -08002433 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002434 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002435 "@FP16",
2436 "@pthreadpool",
2437 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002438)
2439
2440xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002441 name = "avx_ukernels_test_mode",
2442 hdrs = INTERNAL_HDRS,
2443 copts = [
2444 "-UNDEBUG",
2445 "-DXNN_TEST_MODE=1",
2446 ],
2447 gcc_copts = xnnpack_gcc_std_copts(),
2448 gcc_x86_copts = ["-mavx"],
2449 msvc_copts = xnnpack_msvc_std_copts(),
2450 msvc_x86_32_copts = ["/arch:AVX"],
2451 msvc_x86_64_copts = ["/arch:AVX"],
2452 x86_srcs = AVX_UKERNELS,
2453 deps = [
2454 ":tables",
2455 "@FP16",
2456 "@pthreadpool",
2457 ],
2458)
2459
2460xnnpack_cc_library(
Marat Dukhanfda12b82019-11-21 12:27:59 -08002461 name = "fma3_ukernels",
2462 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002463 gcc_copts = xnnpack_gcc_std_copts(),
2464 gcc_x86_copts = ["-mfma"],
2465 msvc_copts = xnnpack_msvc_std_copts(),
2466 msvc_x86_32_copts = ["/arch:AVX"],
2467 msvc_x86_64_copts = ["/arch:AVX"],
Marat Dukhanfda12b82019-11-21 12:27:59 -08002468 x86_srcs = FMA3_UKERNELS,
2469 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002470 ":tables",
Marat Dukhanfda12b82019-11-21 12:27:59 -08002471 "@FP16",
2472 "@pthreadpool",
2473 ],
2474)
2475
2476xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002477 name = "fma3_ukernels_test_mode",
2478 hdrs = INTERNAL_HDRS,
2479 copts = [
2480 "-UNDEBUG",
2481 "-DXNN_TEST_MODE=1",
2482 ],
2483 gcc_copts = xnnpack_gcc_std_copts(),
2484 gcc_x86_copts = ["-mfma"],
2485 msvc_copts = xnnpack_msvc_std_copts(),
2486 msvc_x86_32_copts = ["/arch:AVX"],
2487 msvc_x86_64_copts = ["/arch:AVX"],
2488 x86_srcs = FMA3_UKERNELS,
2489 deps = [
2490 ":tables",
2491 "@FP16",
2492 "@pthreadpool",
2493 ],
2494)
2495
2496xnnpack_cc_library(
Marat Dukhan6adff4e2019-10-14 18:32:07 -07002497 name = "avx2_ukernels",
2498 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002499 gcc_copts = xnnpack_gcc_std_copts(),
2500 gcc_x86_copts = [
Marat Dukhan6adff4e2019-10-14 18:32:07 -07002501 "-mfma",
2502 "-mavx2",
2503 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002504 msvc_copts = xnnpack_msvc_std_copts(),
2505 msvc_x86_32_copts = ["/arch:AVX2"],
2506 msvc_x86_64_copts = ["/arch:AVX2"],
Marat Dukhan6adff4e2019-10-14 18:32:07 -07002507 x86_srcs = AVX2_UKERNELS,
Marat Dukhan04f03be2019-11-19 12:36:47 -08002508 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002509 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002510 "@FP16",
2511 "@pthreadpool",
2512 ],
Marat Dukhan6adff4e2019-10-14 18:32:07 -07002513)
2514
2515xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002516 name = "avx2_ukernels_test_mode",
2517 hdrs = INTERNAL_HDRS,
2518 copts = [
2519 "-UNDEBUG",
2520 "-DXNN_TEST_MODE=1",
2521 ],
2522 gcc_copts = xnnpack_gcc_std_copts(),
2523 gcc_x86_copts = [
2524 "-mfma",
2525 "-mavx2",
2526 ],
2527 msvc_copts = xnnpack_msvc_std_copts(),
2528 msvc_x86_32_copts = ["/arch:AVX2"],
2529 msvc_x86_64_copts = ["/arch:AVX2"],
2530 x86_srcs = AVX2_UKERNELS,
2531 deps = [
2532 ":tables",
2533 "@FP16",
2534 "@pthreadpool",
2535 ],
2536)
2537
2538xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002539 name = "avx512f_ukernels",
2540 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002541 gcc_copts = xnnpack_gcc_std_copts(),
2542 gcc_x86_copts = ["-mavx512f"],
2543 mingw_copts = ["-fno-asynchronous-unwind-tables"],
2544 msvc_copts = xnnpack_msvc_std_copts(),
2545 msvc_x86_32_copts = ["/arch:AVX512"],
2546 msvc_x86_64_copts = ["/arch:AVX512"],
2547 msys_copts = ["-fno-asynchronous-unwind-tables"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002548 x86_srcs = AVX512F_UKERNELS,
Marat Dukhan04f03be2019-11-19 12:36:47 -08002549 deps = [
Marat Dukhan3a77ea72019-12-23 12:10:24 -08002550 ":tables",
Marat Dukhan04f03be2019-11-19 12:36:47 -08002551 "@FP16",
2552 "@pthreadpool",
2553 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002554)
2555
2556xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002557 name = "avx512f_ukernels_test_mode",
2558 hdrs = INTERNAL_HDRS,
2559 copts = [
2560 "-UNDEBUG",
2561 "-DXNN_TEST_MODE=1",
2562 ],
2563 gcc_copts = xnnpack_gcc_std_copts(),
2564 gcc_x86_copts = ["-mavx512f"],
2565 mingw_copts = ["-fno-asynchronous-unwind-tables"],
2566 msvc_copts = xnnpack_msvc_std_copts(),
2567 msvc_x86_32_copts = ["/arch:AVX512"],
2568 msvc_x86_64_copts = ["/arch:AVX512"],
2569 msys_copts = ["-fno-asynchronous-unwind-tables"],
2570 x86_srcs = AVX512F_UKERNELS,
2571 deps = [
2572 ":tables",
2573 "@FP16",
2574 "@pthreadpool",
2575 ],
2576)
2577
2578xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002579 name = "asm_ukernels",
2580 hdrs = ["src/xnnpack/assembly.h"],
2581 aarch32_srcs = AARCH32_ASM_UKERNELS,
Frank Barchard683f5592020-04-10 00:48:26 -07002582 aarch64_copts = ["-march=armv8.2-a+fp16"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002583 aarch64_srcs = AARCH64_ASM_UKERNELS,
2584)
2585
Marat Dukhan3b59de22020-06-03 20:15:19 -07002586xnnpack_cc_library(
2587 name = "logging_utils",
2588 srcs = LOGGING_SRCS,
2589 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
2590 copts = LOGGING_COPTS + [
2591 "-Isrc",
2592 "-Iinclude",
2593 ] + select({
2594 ":debug_build": [],
2595 "//conditions:default": xnnpack_min_size_copts(),
2596 }),
2597 gcc_copts = xnnpack_gcc_std_copts(),
2598 msvc_copts = xnnpack_msvc_std_copts(),
2599 visibility = xnnpack_visibility(),
2600 deps = [
2601 "@FP16",
2602 "@clog",
2603 "@pthreadpool",
2604 ],
2605)
2606
Marat Dukhan08c4a432019-10-03 09:29:21 -07002607xnnpack_aggregate_library(
2608 name = "ukernels",
2609 aarch32_deps = [
Marat Dukhan08c4a432019-10-03 09:29:21 -07002610 ":neon_ukernels",
2611 ":neonfma_ukernels",
Marat Dukhan8853b822020-05-07 12:19:01 -07002612 ":neonv8_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002613 ":asm_ukernels",
2614 ],
2615 aarch64_deps = [
Marat Dukhan08c4a432019-10-03 09:29:21 -07002616 ":neon_ukernels",
2617 ":neonfma_ukernels",
Marat Dukhan8853b822020-05-07 12:19:01 -07002618 ":neonv8_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002619 ":neonfp16arith_ukernels",
2620 ":asm_ukernels",
2621 ],
Marat Dukhan33fcf782020-05-24 14:27:15 -07002622 generic_deps = [
2623 ":scalar_ukernels",
2624 ],
Marat Dukhan500b8892020-04-15 17:09:50 -07002625 psimd_deps = [
Marat Dukhan8d3c07e2020-01-02 01:20:59 -08002626 ":psimd_fastmath_ukernels",
2627 ":psimd_accmath_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002628 ],
Marat Dukhan33fcf782020-05-24 14:27:15 -07002629 wasm_deps = [
2630 ":wasm_ukernels",
2631 ],
2632 wasmsimd_deps = [
2633 ":wasm_ukernels",
2634 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002635 x86_deps = [
Marat Dukhan08c4a432019-10-03 09:29:21 -07002636 ":sse2_ukernels",
Marat Dukhanfe7acb62020-03-09 19:30:05 -07002637 ":ssse3_ukernels",
Marat Dukhan69c3f2c2019-11-06 12:30:01 -08002638 ":sse41_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002639 ":avx_ukernels",
Marat Dukhanfda12b82019-11-21 12:27:59 -08002640 ":fma3_ukernels",
Marat Dukhan6adff4e2019-10-14 18:32:07 -07002641 ":avx2_ukernels",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002642 ":avx512f_ukernels",
2643 ],
2644)
2645
Marat Dukhan33fcf782020-05-24 14:27:15 -07002646xnnpack_aggregate_library(
2647 name = "ukernels_test_mode",
2648 aarch32_deps = [
2649 ":neon_ukernels_test_mode",
2650 ":neonfma_ukernels_test_mode",
2651 ":neonv8_ukernels_test_mode",
2652 ":asm_ukernels",
2653 ],
2654 aarch64_deps = [
2655 ":neon_ukernels_test_mode",
2656 ":neonfma_ukernels_test_mode",
2657 ":neonv8_ukernels_test_mode",
2658 ":neonfp16arith_ukernels_test_mode",
2659 ":asm_ukernels",
2660 ],
2661 generic_deps = [
2662 ":scalar_ukernels_test_mode",
2663 ],
2664 psimd_deps = [
2665 ":psimd_fastmath_ukernels_test_mode",
2666 ":psimd_accmath_ukernels_test_mode",
2667 ],
2668 wasm_deps = [
2669 ":wasm_ukernels_test_mode",
2670 ],
2671 wasmsimd_deps = [
2672 ":wasm_ukernels_test_mode",
2673 ],
2674 x86_deps = [
2675 ":sse2_ukernels_test_mode",
2676 ":ssse3_ukernels_test_mode",
2677 ":sse41_ukernels_test_mode",
2678 ":avx_ukernels_test_mode",
2679 ":fma3_ukernels_test_mode",
2680 ":avx2_ukernels_test_mode",
2681 ":avx512f_ukernels_test_mode",
2682 ],
2683)
2684
Marat Dukhan08c4a432019-10-03 09:29:21 -07002685xnnpack_cc_library(
2686 name = "im2col",
2687 srcs = ["src/im2col.c"],
2688 hdrs = [
2689 "src/xnnpack/common.h",
2690 "src/xnnpack/im2col.h",
2691 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002692 gcc_copts = xnnpack_gcc_std_copts(),
2693 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002694)
2695
2696xnnpack_cc_library(
2697 name = "indirection",
2698 srcs = ["src/indirection.c"],
2699 hdrs = INTERNAL_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002700 gcc_copts = xnnpack_gcc_std_copts(),
2701 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002702 deps = [
2703 "@FP16",
2704 "@FXdiv",
2705 "@pthreadpool",
2706 ],
2707)
2708
2709xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002710 name = "indirection_test_mode",
2711 srcs = ["src/indirection.c"],
2712 hdrs = INTERNAL_HDRS,
2713 copts = [
2714 "-UNDEBUG",
2715 "-DXNN_TEST_MODE=1",
2716 ],
2717 gcc_copts = xnnpack_gcc_std_copts(),
2718 msvc_copts = xnnpack_msvc_std_copts(),
2719 deps = [
2720 "@FP16",
2721 "@FXdiv",
2722 "@pthreadpool",
2723 ],
2724)
2725
2726xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002727 name = "operator_run",
2728 srcs = ["src/operator-run.c"],
Marat Dukhanc8e00eb2019-10-04 14:55:26 -07002729 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002730 copts = LOGGING_COPTS + select({
Marat Dukhan05702cf2020-03-26 15:41:33 -07002731 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2732 "//conditions:default": [],
2733 }),
Marat Dukhan10a38082020-04-17 03:58:35 -07002734 gcc_copts = xnnpack_gcc_std_copts(),
2735 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002736 deps = [
Marat Dukhan3b59de22020-06-03 20:15:19 -07002737 ":logging_utils",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002738 "@FP16",
2739 "@FXdiv",
2740 "@clog",
2741 "@pthreadpool",
2742 ],
2743)
2744
Chao Mei6ddfc602020-05-13 22:29:36 -07002745xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002746 name = "operator_run_test_mode",
2747 srcs = ["src/operator-run.c"],
2748 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
2749 copts = LOGGING_COPTS + [
2750 "-UNDEBUG",
2751 "-DXNN_TEST_MODE=1",
2752 ] + select({
2753 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2754 "//conditions:default": [],
2755 }),
2756 gcc_copts = xnnpack_gcc_std_copts(),
2757 msvc_copts = xnnpack_msvc_std_copts(),
2758 deps = [
Marat Dukhan3b59de22020-06-03 20:15:19 -07002759 ":logging_utils",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002760 "@FP16",
2761 "@FXdiv",
2762 "@clog",
2763 "@pthreadpool",
2764 ],
2765)
2766
2767xnnpack_cc_library(
Chao Mei6ddfc602020-05-13 22:29:36 -07002768 name = "memory_planner",
2769 srcs = ["src/memory-planner.c"],
2770 hdrs = INTERNAL_HDRS,
2771 defines = select({
2772 ":xnn_enable_memopt_explicit_true": ["XNN_ENABLE_MEMOPT=1"],
2773 ":xnn_enable_memopt_explicit_false": ["XNN_ENABLE_MEMOPT=0"],
2774 "//conditions:default": ["XNN_ENABLE_MEMOPT=1"],
2775 }),
2776 gcc_copts = xnnpack_gcc_std_copts(),
2777 msvc_copts = xnnpack_msvc_std_copts(),
2778 deps = [
Marat Dukhan3b59de22020-06-03 20:15:19 -07002779 ":logging_utils",
Chao Mei6ddfc602020-05-13 22:29:36 -07002780 "@pthreadpool",
2781 ],
2782)
2783
Marat Dukhan33fcf782020-05-24 14:27:15 -07002784xnnpack_cc_library(
2785 name = "memory_planner_test_mode",
2786 srcs = ["src/memory-planner.c"],
2787 hdrs = INTERNAL_HDRS,
2788 copts = [
2789 "-UNDEBUG",
2790 "-DXNN_TEST_MODE=1",
2791 ],
2792 defines = select({
2793 ":xnn_enable_memopt_explicit_true": ["XNN_ENABLE_MEMOPT=1"],
2794 ":xnn_enable_memopt_explicit_false": ["XNN_ENABLE_MEMOPT=0"],
2795 "//conditions:default": ["XNN_ENABLE_MEMOPT=1"],
2796 }),
2797 gcc_copts = xnnpack_gcc_std_copts(),
2798 msvc_copts = xnnpack_msvc_std_copts(),
2799 deps = [
Marat Dukhan3b59de22020-06-03 20:15:19 -07002800 ":logging_utils",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002801 "@pthreadpool",
2802 ],
2803)
2804
Marat Dukhan08c4a432019-10-03 09:29:21 -07002805cc_library(
2806 name = "enable_assembly",
2807 defines = select({
2808 ":xnn_enable_assembly_explicit_true": ["XNN_ENABLE_ASSEMBLY=1"],
2809 ":xnn_enable_assembly_explicit_false": ["XNN_ENABLE_ASSEMBLY=0"],
Frank Barchard810171d2019-10-10 10:34:51 -07002810 "//conditions:default": ["XNN_ENABLE_ASSEMBLY=1"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002811 }),
2812)
2813
Marat Dukhancf056b22019-10-07 10:26:29 -07002814xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002815 name = "operators",
2816 srcs = OPERATOR_SRCS + [
Marat Dukhan04f03be2019-11-19 12:36:47 -08002817 "src/memory.c",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002818 "src/operator-delete.c",
Marat Dukhancf056b22019-10-07 10:26:29 -07002819 ],
2820 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002821 copts = LOGGING_COPTS + [
Marat Dukhan08c4a432019-10-03 09:29:21 -07002822 "-Isrc",
2823 "-Iinclude",
2824 ] + select({
2825 ":debug_build": [],
2826 "//conditions:default": xnnpack_min_size_copts(),
Marat Dukhan05702cf2020-03-26 15:41:33 -07002827 }) + select({
2828 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2829 "//conditions:default": [],
Marat Dukhan08c4a432019-10-03 09:29:21 -07002830 }),
Marat Dukhan10a38082020-04-17 03:58:35 -07002831 gcc_copts = xnnpack_gcc_std_copts(),
2832 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002833 deps = [
Marat Dukhan08c4a432019-10-03 09:29:21 -07002834 ":indirection",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002835 ":logging_utils",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002836 "@FP16",
2837 "@FXdiv",
2838 "@clog",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002839 "@pthreadpool",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002840 ],
2841)
2842
Marat Dukhan10a38082020-04-17 03:58:35 -07002843xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002844 name = "operators_test_mode",
2845 srcs = OPERATOR_SRCS + [
2846 "src/memory.c",
2847 "src/operator-delete.c",
2848 ],
2849 hdrs = INTERNAL_HDRS + LOGGING_HDRS,
2850 copts = LOGGING_COPTS + [
2851 "-Isrc",
2852 "-Iinclude",
2853 "-UNDEBUG",
2854 "-DXNN_TEST_MODE=1",
2855 ] + select({
2856 ":debug_build": [],
2857 "//conditions:default": xnnpack_min_size_copts(),
2858 }) + select({
2859 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2860 "//conditions:default": [],
2861 }),
2862 gcc_copts = xnnpack_gcc_std_copts(),
2863 msvc_copts = xnnpack_msvc_std_copts(),
2864 deps = [
2865 ":indirection_test_mode",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002866 ":logging_utils",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002867 "@FP16",
2868 "@FXdiv",
2869 "@clog",
2870 "@pthreadpool",
2871 ],
2872)
2873
2874xnnpack_cc_library(
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002875 name = "XNNPACK",
2876 srcs = [
2877 "src/init.c",
Marat Dukhanccfdbd12020-02-03 14:27:45 -08002878 "src/runtime.c",
2879 "src/subgraph.c",
2880 "src/tensor.c",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002881 ] + SUBGRAPH_SRCS + LOGGING_SRCS,
Marat Dukhan10a38082020-04-17 03:58:35 -07002882 hdrs = ["include/xnnpack.h"],
2883 copts = LOGGING_COPTS + [
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002884 "-Isrc",
2885 "-Iinclude",
2886 ] + select({
2887 ":debug_build": [],
2888 "//conditions:default": xnnpack_min_size_copts(),
Marat Dukhan05702cf2020-03-26 15:41:33 -07002889 }) + select({
2890 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2891 "//conditions:default": [],
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002892 }),
Marat Dukhan10a38082020-04-17 03:58:35 -07002893 gcc_copts = xnnpack_gcc_std_copts(),
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002894 includes = ["include"],
Marat Dukhan10a38082020-04-17 03:58:35 -07002895 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002896 visibility = xnnpack_visibility(),
2897 deps = [
2898 ":enable_assembly",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002899 ":logging_utils",
Chao Mei6ddfc602020-05-13 22:29:36 -07002900 ":memory_planner",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002901 ":operator_run",
2902 ":operators",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002903 ":ukernels",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002904 "@clog",
Marat Dukhanab2946c2020-05-21 20:04:13 -07002905 "@FP16",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002906 "@pthreadpool",
Marat Dukhand343c222019-10-07 09:22:14 -07002907 ] + select({
2908 ":emscripten": [],
2909 "//conditions:default": ["@cpuinfo"],
2910 }),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002911)
2912
Marat Dukhan10a38082020-04-17 03:58:35 -07002913xnnpack_cc_library(
Marat Dukhan33fcf782020-05-24 14:27:15 -07002914 name = "XNNPACK_test_mode",
2915 srcs = [
2916 "src/init.c",
2917 "src/runtime.c",
2918 "src/subgraph.c",
2919 "src/tensor.c",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002920 ] + SUBGRAPH_SRCS + LOGGING_SRCS,
Marat Dukhan33fcf782020-05-24 14:27:15 -07002921 hdrs = ["include/xnnpack.h"],
2922 copts = LOGGING_COPTS + [
2923 "-Isrc",
2924 "-Iinclude",
2925 "-UNDEBUG",
2926 "-DXNN_TEST_MODE=1",
2927 ] + select({
2928 ":debug_build": [],
2929 "//conditions:default": xnnpack_min_size_copts(),
2930 }) + select({
2931 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2932 "//conditions:default": [],
2933 }),
2934 gcc_copts = xnnpack_gcc_std_copts(),
2935 includes = ["include"],
2936 msvc_copts = xnnpack_msvc_std_copts(),
2937 visibility = xnnpack_visibility(),
2938 deps = [
2939 ":enable_assembly",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002940 ":logging_utils",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002941 ":memory_planner_test_mode",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002942 ":operator_run_test_mode",
2943 ":operators_test_mode",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002944 ":ukernels_test_mode",
Marat Dukhan33fcf782020-05-24 14:27:15 -07002945 "@clog",
2946 "@FP16",
2947 "@pthreadpool",
2948 ] + select({
2949 ":emscripten": [],
2950 "//conditions:default": ["@cpuinfo"],
2951 }),
2952)
2953
2954xnnpack_cc_library(
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002955 name = "xnnpack_operators_nhwc_f32",
2956 srcs = [
2957 "src/init.c",
2958 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002959 hdrs = ["include/xnnpack.h"],
2960 copts = LOGGING_COPTS + [
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002961 "-Isrc",
2962 "-Iinclude",
2963 ] + select({
2964 ":debug_build": [],
2965 "//conditions:default": xnnpack_min_size_copts(),
Marat Dukhan05702cf2020-03-26 15:41:33 -07002966 }) + select({
2967 ":xnn_enable_hmp_explicit_false": ["-DXNN_MAX_UARCH_TYPES=1"],
2968 "//conditions:default": [],
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002969 }),
2970 defines = [
2971 "XNN_NO_Q8_OPERATORS",
2972 "XNN_NO_U8_OPERATORS",
2973 "XNN_NO_X8_OPERATORS",
Marat Dukhanefc47b82019-11-18 09:25:38 -08002974 "XNN_NO_NCHW_OPERATORS",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002975 ],
Marat Dukhan10a38082020-04-17 03:58:35 -07002976 gcc_copts = xnnpack_gcc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002977 includes = ["include"],
Marat Dukhan10a38082020-04-17 03:58:35 -07002978 msvc_copts = xnnpack_msvc_std_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002979 visibility = xnnpack_visibility(),
2980 deps = [
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002981 ":enable_assembly",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002982 ":logging_utils",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002983 ":operator_run",
2984 ":operators",
Marat Dukhan3b59de22020-06-03 20:15:19 -07002985 ":ukernels",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002986 "@clog",
Marat Dukhan08c4a432019-10-03 09:29:21 -07002987 "@pthreadpool",
Marat Dukhan8fe54e42019-10-10 14:12:59 -07002988 ] + select({
2989 ":emscripten": [],
2990 "//conditions:default": ["@cpuinfo"],
2991 }),
Marat Dukhan08c4a432019-10-03 09:29:21 -07002992)
2993
Marat Dukhancf056b22019-10-07 10:26:29 -07002994xnnpack_cc_library(
Marat Dukhan08c4a432019-10-03 09:29:21 -07002995 name = "bench_utils",
2996 srcs = ["bench/utils.cc"],
2997 hdrs = ["bench/utils.h"],
Marat Dukhanbad48fe2019-11-04 10:35:22 -08002998 deps = [
2999 "@com_google_benchmark//:benchmark",
3000 "@cpuinfo",
3001 ],
Marat Dukhan08c4a432019-10-03 09:29:21 -07003002)
3003
Frank Barchard7e955972019-10-11 10:34:25 -07003004######################### Benchmarks for micro-kernels #########################
Marat Dukhan08c4a432019-10-03 09:29:21 -07003005
3006xnnpack_benchmark(
3007 name = "q8_gemm_bench",
3008 srcs = [
3009 "bench/gemm.h",
3010 "bench/q8-gemm.cc",
3011 "src/xnnpack/AlignedAllocator.h",
3012 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07003013 copts = xnnpack_optional_ruy_copts() + xnnpack_optional_gemmlowp_copts(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003014 deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_ruy_deps() + xnnpack_optional_gemmlowp_deps(),
3015)
3016
3017xnnpack_benchmark(
Frank Barchard40d20fe2020-05-05 00:37:45 -07003018 name = "f16_igemm_bench",
3019 srcs = [
3020 "bench/f16-igemm.cc",
3021 "bench/conv.h",
3022 "bench/google/conv.h",
3023 "src/xnnpack/AlignedAllocator.h",
3024 ] + MICROKERNEL_BENCHMARK_HDRS,
3025 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
3026)
3027
3028xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003029 name = "f16_gemm_bench",
3030 srcs = [
3031 "bench/f16-gemm.cc",
3032 "bench/gemm.h",
3033 "src/xnnpack/AlignedAllocator.h",
3034 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003035 deps = MICROKERNEL_BENCHMARK_DEPS,
3036)
3037
3038xnnpack_benchmark(
Marat Dukhanbdb56f52020-02-05 21:42:49 -08003039 name = "f16_spmm_bench",
3040 srcs = [
3041 "bench/f16-spmm.cc",
3042 "bench/gemm.h",
Marat Dukhanbdb56f52020-02-05 21:42:49 -08003043 "src/xnnpack/AlignedAllocator.h",
3044 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhanbdb56f52020-02-05 21:42:49 -08003045 deps = MICROKERNEL_BENCHMARK_DEPS,
3046)
3047
3048xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003049 name = "f32_igemm_bench",
3050 srcs = [
3051 "bench/f32-igemm.cc",
3052 "bench/conv.h",
3053 "src/xnnpack/AlignedAllocator.h",
3054 ] + MICROKERNEL_BENCHMARK_HDRS,
Frank Barchard7e955972019-10-11 10:34:25 -07003055 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07003056)
3057
3058xnnpack_benchmark(
3059 name = "f32_conv_hwc_bench",
3060 srcs = [
3061 "bench/f32-conv-hwc.cc",
3062 "bench/dconv.h",
3063 "src/xnnpack/AlignedAllocator.h",
3064 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003065 deps = MICROKERNEL_BENCHMARK_DEPS,
3066)
3067
3068xnnpack_benchmark(
Marat Dukhan1f29b802020-05-15 23:46:39 -07003069 name = "f32_conv_hwc2chw_bench",
Erich Elsen563df5f2019-10-23 08:02:21 -07003070 srcs = [
Marat Dukhan1f29b802020-05-15 23:46:39 -07003071 "bench/f32-conv-hwc2chw.cc",
Erich Elsen563df5f2019-10-23 08:02:21 -07003072 "bench/dconv.h",
3073 "src/xnnpack/AlignedAllocator.h",
3074 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
Erich Elsen563df5f2019-10-23 08:02:21 -07003075 deps = MICROKERNEL_BENCHMARK_DEPS,
3076)
3077
3078xnnpack_benchmark(
Frank Barchard5a599a62020-06-04 20:12:44 -07003079 name = "f16_dwconv_bench",
3080 srcs = [
3081 "bench/f16-dwconv.cc",
3082 "bench/dwconv.h",
3083 "bench/google/dwconv.h",
3084 "src/xnnpack/AlignedAllocator.h",
3085 ] + MICROKERNEL_BENCHMARK_HDRS,
3086 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
3087)
3088
3089xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003090 name = "f32_dwconv_bench",
3091 srcs = [
3092 "bench/f32-dwconv.cc",
3093 "bench/dwconv.h",
3094 "src/xnnpack/AlignedAllocator.h",
3095 ] + MICROKERNEL_BENCHMARK_HDRS,
3096 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
3097)
3098
3099xnnpack_benchmark(
Marat Dukhan1f29b802020-05-15 23:46:39 -07003100 name = "f32_dwconv_chw_bench",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003101 srcs = [
Marat Dukhan1f29b802020-05-15 23:46:39 -07003102 "bench/f32-dwconv-chw.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003103 "bench/dwconv.h",
3104 "src/xnnpack/AlignedAllocator.h",
3105 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
3106 deps = MICROKERNEL_BENCHMARK_DEPS + [":indirection"],
3107)
3108
3109xnnpack_benchmark(
3110 name = "f32_gemm_bench",
3111 srcs = [
3112 "bench/f32-gemm.cc",
3113 "bench/gemm.h",
3114 "src/xnnpack/AlignedAllocator.h",
3115 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07003116 copts = xnnpack_optional_ruy_copts(),
Frank Barchard7e955972019-10-11 10:34:25 -07003117 deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_ruy_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003118)
3119
3120xnnpack_benchmark(
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003121 name = "f32_raddexpminusmax_bench",
3122 srcs = [
3123 "bench/f32-raddexpminusmax.cc",
3124 "src/xnnpack/AlignedAllocator.h",
3125 ] + MICROKERNEL_BENCHMARK_HDRS,
3126 deps = MICROKERNEL_BENCHMARK_DEPS,
3127)
3128
3129xnnpack_benchmark(
3130 name = "f32_raddextexp_bench",
3131 srcs = [
3132 "bench/f32-raddextexp.cc",
3133 "src/xnnpack/AlignedAllocator.h",
3134 ] + MICROKERNEL_BENCHMARK_HDRS,
3135 deps = MICROKERNEL_BENCHMARK_DEPS,
3136)
3137
3138xnnpack_benchmark(
3139 name = "f32_raddstoreexpminusmax_bench",
3140 srcs = [
3141 "bench/f32-raddstoreexpminusmax.cc",
3142 "src/xnnpack/AlignedAllocator.h",
3143 ] + MICROKERNEL_BENCHMARK_HDRS,
3144 deps = MICROKERNEL_BENCHMARK_DEPS,
3145)
3146
3147xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003148 name = "f32_rmax_bench",
3149 srcs = [
3150 "bench/f32-rmax.cc",
3151 "src/xnnpack/AlignedAllocator.h",
3152 ] + MICROKERNEL_BENCHMARK_HDRS,
3153 deps = MICROKERNEL_BENCHMARK_DEPS,
3154)
3155
3156xnnpack_benchmark(
Marat Dukhan14bec502019-11-18 11:35:31 -08003157 name = "f32_sigmoid_bench",
3158 srcs = [
3159 "bench/f32-sigmoid.cc",
3160 "src/xnnpack/AlignedAllocator.h",
3161 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan14bec502019-11-18 11:35:31 -08003162 deps = MICROKERNEL_BENCHMARK_DEPS,
3163)
3164
3165xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003166 name = "f32_spmm_bench",
3167 srcs = [
3168 "bench/f32-spmm.cc",
3169 "bench/gemm.h",
3170 "src/xnnpack/AlignedAllocator.h",
3171 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003172 deps = MICROKERNEL_BENCHMARK_DEPS,
3173)
3174
3175xnnpack_benchmark(
Marat Dukhanfd8e6892020-01-27 15:25:25 -08003176 name = "f32_softmax_bench",
Marat Dukhan4a4a7fa2019-10-21 13:46:14 -07003177 srcs = [
Marat Dukhanfd8e6892020-01-27 15:25:25 -08003178 "bench/f32-softmax.cc",
Marat Dukhan4a4a7fa2019-10-21 13:46:14 -07003179 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan10a38082020-04-17 03:58:35 -07003180 copts = xnnpack_optional_dnnl_copts(),
Marat Dukhan8d3c6932020-03-06 20:27:27 -08003181 deps = MICROKERNEL_BENCHMARK_DEPS + xnnpack_optional_dnnl_deps(),
Marat Dukhan4a4a7fa2019-10-21 13:46:14 -07003182)
3183
3184xnnpack_benchmark(
Marat Dukhan4c4eb002019-12-08 21:27:49 -08003185 name = "f32_vscaleexpminusmax_bench",
3186 srcs = [
3187 "bench/f32-vscaleexpminusmax.cc",
3188 "src/xnnpack/AlignedAllocator.h",
3189 ] + MICROKERNEL_BENCHMARK_HDRS,
3190 deps = MICROKERNEL_BENCHMARK_DEPS,
3191)
3192
3193xnnpack_benchmark(
3194 name = "f32_vscaleextexp_bench",
3195 srcs = [
3196 "bench/f32-vscaleextexp.cc",
3197 "src/xnnpack/AlignedAllocator.h",
3198 ] + MICROKERNEL_BENCHMARK_HDRS,
3199 deps = MICROKERNEL_BENCHMARK_DEPS,
3200)
3201
3202xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003203 name = "f32_im2col_gemm_bench",
3204 srcs = [
3205 "bench/f32-im2col-gemm.cc",
3206 "bench/conv.h",
3207 "src/xnnpack/AlignedAllocator.h",
3208 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_BENCHMARK_HDRS,
3209 deps = MICROKERNEL_BENCHMARK_DEPS + [":im2col"],
3210)
3211
Marat Dukhanfe7acb62020-03-09 19:30:05 -07003212xnnpack_benchmark(
3213 name = "requantization_bench",
3214 srcs = [
3215 "bench/requantization.cc",
3216 "src/xnnpack/requantization-stubs.h",
3217 "src/xnnpack/AlignedAllocator.h",
3218 ] + MICROKERNEL_BENCHMARK_HDRS,
3219 deps = MICROKERNEL_BENCHMARK_DEPS,
3220)
3221
Marat Dukhanffbf96a2020-05-14 02:59:08 -07003222xnnpack_benchmark(
3223 name = "rounding_bench",
3224 srcs = [
3225 "bench/rounding.cc",
3226 "src/xnnpack/math-stubs.h",
3227 "src/xnnpack/AlignedAllocator.h",
3228 ] + MICROKERNEL_BENCHMARK_HDRS,
3229 deps = MICROKERNEL_BENCHMARK_DEPS,
3230)
3231
Marat Dukhan08c4a432019-10-03 09:29:21 -07003232########################### Benchmarks for operators ###########################
3233
3234xnnpack_benchmark(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003235 name = "average_pooling_bench",
3236 srcs = ["bench/average-pooling.cc"],
Marat Dukhan7a16d8b2020-03-11 04:22:44 -07003237 copts = xnnpack_optional_tflite_copts(),
Marat Dukhan8ea0b072020-04-23 16:12:18 -07003238 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003239 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003240)
3241
3242xnnpack_benchmark(
3243 name = "channel_shuffle_bench",
3244 srcs = ["bench/channel-shuffle.cc"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003245 deps = OPERATOR_BENCHMARK_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003246)
3247
3248xnnpack_benchmark(
3249 name = "convolution_bench",
3250 srcs = ["bench/convolution.cc"],
3251 copts = xnnpack_optional_tflite_copts() + xnnpack_optional_armcl_copts(),
Marat Dukhan8ea0b072020-04-23 16:12:18 -07003252 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003253 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps() + xnnpack_optional_armcl_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003254)
3255
3256xnnpack_benchmark(
3257 name = "deconvolution_bench",
3258 srcs = ["bench/deconvolution.cc"],
3259 copts = xnnpack_optional_tflite_copts(),
Marat Dukhan8ea0b072020-04-23 16:12:18 -07003260 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003261 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003262)
3263
3264xnnpack_benchmark(
3265 name = "global_average_pooling_bench",
3266 srcs = ["bench/global-average-pooling.cc"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003267 deps = OPERATOR_BENCHMARK_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003268)
3269
3270xnnpack_benchmark(
3271 name = "max_pooling_bench",
3272 srcs = ["bench/max-pooling.cc"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003273 deps = OPERATOR_BENCHMARK_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07003274)
3275
3276xnnpack_benchmark(
3277 name = "sigmoid_bench",
3278 srcs = ["bench/sigmoid.cc"],
Marat Dukhanc3b9e862019-11-17 13:18:54 -08003279 copts = xnnpack_optional_tflite_copts(),
Marat Dukhanca2ba702020-04-24 01:31:47 -07003280 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003281 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003282)
3283
3284xnnpack_benchmark(
Marat Dukhan95b22432019-10-30 16:30:14 -07003285 name = "prelu_bench",
3286 srcs = ["bench/prelu.cc"],
3287 copts = xnnpack_optional_tflite_copts(),
Marat Dukhan8ea0b072020-04-23 16:12:18 -07003288 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003289 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan95b22432019-10-30 16:30:14 -07003290)
3291
3292xnnpack_benchmark(
Marat Dukhanfd8e6892020-01-27 15:25:25 -08003293 name = "softmax_bench",
3294 srcs = ["bench/softmax.cc"],
Marat Dukhan9c0db962020-01-28 12:30:14 -08003295 copts = xnnpack_optional_tflite_copts(),
Marat Dukhanca2ba702020-04-24 01:31:47 -07003296 tags = ["nowin32"],
Marat Dukhan1b354632020-03-23 12:50:22 -07003297 deps = OPERATOR_BENCHMARK_DEPS + xnnpack_optional_tflite_deps(),
Marat Dukhan08c4a432019-10-03 09:29:21 -07003298)
3299
Marat Dukhanc068bb62019-10-04 13:24:39 -07003300############################# End-to-end benchmarks ############################
3301
3302cc_library(
3303 name = "mobilenet_v1",
3304 srcs = ["models/mobilenet-v1.cc"],
3305 hdrs = ["models/models.h"],
Marat Dukhana84e40b2019-12-11 15:38:03 -08003306 copts = xnnpack_std_cxxopts(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07003307 linkstatic = True,
3308 deps = [
3309 ":XNNPACK",
3310 "@pthreadpool",
3311 ],
3312)
3313
3314cc_library(
3315 name = "mobilenet_v2",
3316 srcs = ["models/mobilenet-v2.cc"],
3317 hdrs = ["models/models.h"],
Marat Dukhana84e40b2019-12-11 15:38:03 -08003318 copts = xnnpack_std_cxxopts(),
Marat Dukhanc068bb62019-10-04 13:24:39 -07003319 linkstatic = True,
3320 deps = [
3321 ":XNNPACK",
3322 "@pthreadpool",
3323 ],
3324)
3325
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003326cc_library(
3327 name = "mobilenet_v3_large",
3328 srcs = ["models/mobilenet-v3-large.cc"],
3329 hdrs = ["models/models.h"],
Marat Dukhana84e40b2019-12-11 15:38:03 -08003330 copts = xnnpack_std_cxxopts(),
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003331 linkstatic = True,
3332 deps = [
3333 ":XNNPACK",
3334 "@pthreadpool",
3335 ],
3336)
3337
3338cc_library(
3339 name = "mobilenet_v3_small",
3340 srcs = ["models/mobilenet-v3-small.cc"],
3341 hdrs = ["models/models.h"],
Marat Dukhana84e40b2019-12-11 15:38:03 -08003342 copts = xnnpack_std_cxxopts(),
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003343 linkstatic = True,
3344 deps = [
3345 ":XNNPACK",
3346 "@pthreadpool",
3347 ],
3348)
3349
Marat Dukhanc068bb62019-10-04 13:24:39 -07003350xnnpack_benchmark(
Marat Dukhanef4416e2019-10-31 13:44:40 -07003351 name = "f32_dwconv_e2e_bench",
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003352 srcs = [
3353 "bench/f32-dwconv-e2e.cc",
3354 "bench/end2end.h",
3355 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhanef4416e2019-10-31 13:44:40 -07003356 deps = MICROKERNEL_BENCHMARK_DEPS + [
3357 ":XNNPACK",
3358 ":mobilenet_v1",
3359 ":mobilenet_v2",
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003360 ":mobilenet_v3_large",
3361 ":mobilenet_v3_small",
Marat Dukhanef4416e2019-10-31 13:44:40 -07003362 ],
3363)
3364
3365xnnpack_benchmark(
Marat Dukhan5f18d262019-10-31 10:24:14 -07003366 name = "f32_gemm_e2e_bench",
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003367 srcs = [
3368 "bench/f32-gemm-e2e.cc",
3369 "bench/end2end.h",
3370 ] + MICROKERNEL_BENCHMARK_HDRS,
Marat Dukhan5f18d262019-10-31 10:24:14 -07003371 deps = MICROKERNEL_BENCHMARK_DEPS + [
3372 ":XNNPACK",
3373 ":mobilenet_v1",
3374 ":mobilenet_v2",
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003375 ":mobilenet_v3_large",
3376 ":mobilenet_v3_small",
Marat Dukhan5f18d262019-10-31 10:24:14 -07003377 ],
3378)
3379
3380xnnpack_benchmark(
Marat Dukhanc068bb62019-10-04 13:24:39 -07003381 name = "end2end_bench",
3382 srcs = ["bench/end2end.cc"],
3383 deps = [
3384 ":XNNPACK",
Frank Barchardc712fa42019-10-31 14:00:21 -07003385 ":bench_utils",
Marat Dukhanc068bb62019-10-04 13:24:39 -07003386 ":mobilenet_v1",
3387 ":mobilenet_v2",
Marat Dukhanc08cdf52019-12-09 09:17:51 -08003388 ":mobilenet_v3_large",
3389 ":mobilenet_v3_small",
Marat Dukhanc068bb62019-10-04 13:24:39 -07003390 "@pthreadpool",
3391 ],
3392)
3393
Marat Dukhan6adff4e2019-10-14 18:32:07 -07003394#################### Accuracy evaluation for math functions ####################
3395
3396xnnpack_benchmark(
3397 name = "f32_exp_eval",
3398 srcs = [
3399 "eval/f32-exp.cc",
3400 "src/xnnpack/AlignedAllocator.h",
3401 ] + ACCURACY_EVAL_HDRS,
3402 deps = ACCURACY_EVAL_DEPS,
3403)
3404
Marat Dukhan515c9772019-10-17 18:07:57 -07003405xnnpack_benchmark(
3406 name = "f32_expminus_eval",
3407 srcs = [
3408 "eval/f32-expminus.cc",
3409 "src/xnnpack/AlignedAllocator.h",
3410 ] + ACCURACY_EVAL_HDRS,
3411 deps = ACCURACY_EVAL_DEPS,
3412)
3413
Marat Dukhan98ba4412019-10-23 02:14:28 -07003414xnnpack_benchmark(
3415 name = "f32_extexp_eval",
3416 srcs = [
3417 "eval/f32-extexp.cc",
3418 "src/xnnpack/AlignedAllocator.h",
3419 ] + ACCURACY_EVAL_HDRS,
3420 deps = ACCURACY_EVAL_DEPS,
3421)
3422
Marat Dukhan8853b822020-05-07 12:19:01 -07003423xnnpack_unit_test(
3424 name = "f32_roundne_eval",
3425 srcs = [
3426 "eval/f32-roundne.cc",
3427 "src/xnnpack/AlignedAllocator.h",
3428 "src/xnnpack/math-stubs.h",
3429 ] + MICROKERNEL_TEST_HDRS,
Marat Dukhan22eed3d2020-05-11 20:13:37 -07003430 automatic = False,
Marat Dukhan8853b822020-05-07 12:19:01 -07003431 deps = MICROKERNEL_TEST_DEPS,
3432)
3433
Marat Dukhan2dbb9442020-05-12 20:43:43 -07003434xnnpack_unit_test(
Marat Dukhanc9852ba2020-05-13 17:21:29 -07003435 name = "f32_roundd_eval",
3436 srcs = [
3437 "eval/f32-roundd.cc",
3438 "src/xnnpack/AlignedAllocator.h",
3439 "src/xnnpack/math-stubs.h",
3440 ] + MICROKERNEL_TEST_HDRS,
3441 automatic = False,
3442 deps = MICROKERNEL_TEST_DEPS,
3443)
3444
3445xnnpack_unit_test(
3446 name = "f32_roundu_eval",
3447 srcs = [
3448 "eval/f32-roundu.cc",
3449 "src/xnnpack/AlignedAllocator.h",
3450 "src/xnnpack/math-stubs.h",
3451 ] + MICROKERNEL_TEST_HDRS,
3452 automatic = False,
3453 deps = MICROKERNEL_TEST_DEPS,
3454)
3455
3456xnnpack_unit_test(
Marat Dukhan2dbb9442020-05-12 20:43:43 -07003457 name = "f32_roundz_eval",
3458 srcs = [
3459 "eval/f32-roundz.cc",
3460 "src/xnnpack/AlignedAllocator.h",
3461 "src/xnnpack/math-stubs.h",
3462 ] + MICROKERNEL_TEST_HDRS,
Marat Dukhanc9852ba2020-05-13 17:21:29 -07003463 automatic = False,
Marat Dukhan2dbb9442020-05-12 20:43:43 -07003464 deps = MICROKERNEL_TEST_DEPS,
3465)
3466
Marat Dukhan346a9e52019-11-15 09:06:30 -08003467xnnpack_benchmark(
3468 name = "f32_sigmoid_eval",
3469 srcs = [
3470 "eval/f32-sigmoid.cc",
3471 "src/xnnpack/AlignedAllocator.h",
3472 ] + ACCURACY_EVAL_HDRS,
3473 deps = ACCURACY_EVAL_DEPS,
3474)
3475
Marat Dukhan08c4a432019-10-03 09:29:21 -07003476######################### Unit tests for micro-kernels #########################
3477
3478xnnpack_unit_test(
Marat Dukhande06f492020-04-09 00:19:31 -07003479 name = "f16_gemm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003480 srcs = [
Marat Dukhande06f492020-04-09 00:19:31 -07003481 "test/f16-gemm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003482 "test/gemm-microkernel-tester.h",
3483 "src/xnnpack/AlignedAllocator.h",
3484 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3485 deps = MICROKERNEL_TEST_DEPS,
3486)
3487
3488xnnpack_unit_test(
Marat Dukhan355ab432020-04-09 19:01:52 -07003489 name = "f16_spmm_minmax_test",
Marat Dukhanbdb56f52020-02-05 21:42:49 -08003490 srcs = [
Marat Dukhan355ab432020-04-09 19:01:52 -07003491 "test/f16-spmm-minmax.cc",
Marat Dukhanbdb56f52020-02-05 21:42:49 -08003492 "test/spmm-microkernel-tester.h",
3493 "src/xnnpack/AlignedAllocator.h",
3494 ] + MICROKERNEL_TEST_HDRS,
3495 deps = MICROKERNEL_TEST_DEPS,
3496)
3497
3498xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003499 name = "f32_argmaxpool_test",
3500 srcs = [
3501 "test/f32-argmaxpool.cc",
3502 "test/argmaxpool-microkernel-tester.h",
3503 "src/xnnpack/AlignedAllocator.h",
3504 ] + MICROKERNEL_TEST_HDRS,
3505 deps = MICROKERNEL_TEST_DEPS,
3506)
3507
3508xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07003509 name = "f32_avgpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003510 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07003511 "test/f32-avgpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003512 "test/avgpool-microkernel-tester.h",
3513 "src/xnnpack/AlignedAllocator.h",
3514 ] + MICROKERNEL_TEST_HDRS,
3515 deps = MICROKERNEL_TEST_DEPS,
3516)
3517
3518xnnpack_unit_test(
Marat Dukhan660fd192020-03-10 04:55:30 -07003519 name = "f32_ibilinear_test",
Marat Dukhan35dacfb2019-11-07 19:18:16 -08003520 srcs = [
Marat Dukhan660fd192020-03-10 04:55:30 -07003521 "test/f32-ibilinear.cc",
3522 "test/ibilinear-microkernel-tester.h",
Marat Dukhan35dacfb2019-11-07 19:18:16 -08003523 "src/xnnpack/AlignedAllocator.h",
3524 ] + MICROKERNEL_TEST_HDRS,
3525 deps = MICROKERNEL_TEST_DEPS,
3526)
3527
3528xnnpack_unit_test(
Frank Barchardb1966592020-05-12 13:47:06 -07003529 name = "f16_clamp_test",
3530 srcs = [
3531 "test/f16-clamp.cc",
3532 "test/clamp-microkernel-tester.h",
3533 ] + MICROKERNEL_TEST_HDRS,
3534 deps = MICROKERNEL_TEST_DEPS,
3535)
3536
3537xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003538 name = "f32_clamp_test",
3539 srcs = [
3540 "test/f32-clamp.cc",
3541 "test/clamp-microkernel-tester.h",
3542 ] + MICROKERNEL_TEST_HDRS,
3543 deps = MICROKERNEL_TEST_DEPS,
3544)
3545
3546xnnpack_unit_test(
Marat Dukhan163a7e62020-04-09 04:19:26 -07003547 name = "f32_igemm_test",
3548 srcs = [
3549 "test/f32-igemm.cc",
3550 "test/gemm-microkernel-tester.h",
3551 "src/xnnpack/AlignedAllocator.h",
3552 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3553 deps = MICROKERNEL_TEST_DEPS,
3554)
3555
3556xnnpack_unit_test(
Marat Dukhan467f6362020-05-22 23:21:55 -07003557 name = "f32_igemm_relu_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003558 srcs = [
Marat Dukhan467f6362020-05-22 23:21:55 -07003559 "test/f32-igemm-relu.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003560 "test/gemm-microkernel-tester.h",
3561 "src/xnnpack/AlignedAllocator.h",
3562 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3563 deps = MICROKERNEL_TEST_DEPS,
3564)
3565
3566xnnpack_unit_test(
Marat Dukhane207b7b2020-05-28 16:27:42 -07003567 name = "f32_igemm_minmax_test",
3568 srcs = [
3569 "test/f32-igemm-minmax.cc",
3570 "test/gemm-microkernel-tester.h",
3571 "src/xnnpack/AlignedAllocator.h",
3572 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3573 deps = MICROKERNEL_TEST_DEPS,
3574)
3575
3576xnnpack_unit_test(
Frank Barchardb0e4fae2020-05-04 15:27:51 -07003577 name = "f16_igemm_minmax_test",
3578 srcs = [
3579 "test/f16-igemm-minmax.cc",
3580 "test/gemm-microkernel-tester.h",
3581 "src/xnnpack/AlignedAllocator.h",
3582 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3583 deps = MICROKERNEL_TEST_DEPS,
3584)
3585
3586xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003587 name = "f32_conv_hwc_test",
3588 srcs = [
3589 "test/f32-conv-hwc.cc",
3590 "test/conv-hwc-microkernel-tester.h",
3591 "src/xnnpack/AlignedAllocator.h",
3592 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3593 deps = MICROKERNEL_TEST_DEPS,
3594)
3595
3596xnnpack_unit_test(
Marat Dukhan1f29b802020-05-15 23:46:39 -07003597 name = "f32_conv_hwc2chw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003598 srcs = [
Marat Dukhan1f29b802020-05-15 23:46:39 -07003599 "test/f32-conv-hwc2chw.cc",
3600 "test/conv-hwc2chw-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003601 "src/xnnpack/AlignedAllocator.h",
3602 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3603 deps = MICROKERNEL_TEST_DEPS,
3604)
3605
3606xnnpack_unit_test(
Marat Dukhan163a7e62020-04-09 04:19:26 -07003607 name = "f32_dwconv_test",
3608 srcs = [
3609 "test/f32-dwconv.cc",
3610 "test/dwconv-microkernel-tester.h",
3611 "src/xnnpack/AlignedAllocator.h",
3612 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3613 deps = MICROKERNEL_TEST_DEPS,
3614)
3615
3616xnnpack_unit_test(
Frank Barchard5a599a62020-06-04 20:12:44 -07003617 name = "f16_dwconv_minmax_test",
3618 srcs = [
3619 "test/f16-dwconv-minmax.cc",
3620 "test/dwconv-microkernel-tester.h",
3621 "src/xnnpack/AlignedAllocator.h",
3622 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3623 deps = MICROKERNEL_TEST_DEPS,
3624)
3625
3626xnnpack_unit_test(
Marat Dukhan1c587112020-04-08 20:04:28 -07003627 name = "f32_dwconv_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003628 srcs = [
Marat Dukhan1c587112020-04-08 20:04:28 -07003629 "test/f32-dwconv-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003630 "test/dwconv-microkernel-tester.h",
3631 "src/xnnpack/AlignedAllocator.h",
3632 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3633 deps = MICROKERNEL_TEST_DEPS,
3634)
3635
3636xnnpack_unit_test(
Marat Dukhan1f29b802020-05-15 23:46:39 -07003637 name = "f32_dwconv_chw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003638 srcs = [
Marat Dukhan1f29b802020-05-15 23:46:39 -07003639 "test/f32-dwconv-chw.cc",
3640 "test/dwconv-chw-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003641 "src/xnnpack/AlignedAllocator.h",
3642 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3643 deps = MICROKERNEL_TEST_DEPS,
3644)
3645
3646xnnpack_unit_test(
Frank Barchard0bb49a72020-06-04 11:35:11 -07003647 name = "f16_gavgpool_minmax_test",
3648 srcs = [
3649 "test/f16-gavgpool-minmax.cc",
3650 "test/gavgpool-microkernel-tester.h",
3651 "src/xnnpack/AlignedAllocator.h",
3652 ] + MICROKERNEL_TEST_HDRS,
3653 deps = MICROKERNEL_TEST_DEPS,
3654)
3655
3656xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07003657 name = "f32_gavgpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003658 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07003659 "test/f32-gavgpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003660 "test/gavgpool-microkernel-tester.h",
3661 "src/xnnpack/AlignedAllocator.h",
3662 ] + MICROKERNEL_TEST_HDRS,
3663 deps = MICROKERNEL_TEST_DEPS,
3664)
3665
3666xnnpack_unit_test(
Marat Dukhan1f29b802020-05-15 23:46:39 -07003667 name = "f32_gavgpool_cw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003668 srcs = [
Marat Dukhan1f29b802020-05-15 23:46:39 -07003669 "test/f32-gavgpool-cw.cc",
3670 "test/gavgpool-cw-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003671 "src/xnnpack/AlignedAllocator.h",
3672 ] + MICROKERNEL_TEST_HDRS,
3673 deps = MICROKERNEL_TEST_DEPS,
3674)
3675
3676xnnpack_unit_test(
Marat Dukhan163a7e62020-04-09 04:19:26 -07003677 name = "f32_gemm_test",
3678 srcs = [
3679 "test/f32-gemm.cc",
3680 "test/gemm-microkernel-tester.h",
3681 "src/xnnpack/AlignedAllocator.h",
3682 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3683 deps = MICROKERNEL_TEST_DEPS,
3684)
3685
3686xnnpack_unit_test(
Marat Dukhan467f6362020-05-22 23:21:55 -07003687 name = "f32_gemm_relu_test",
3688 srcs = [
3689 "test/f32-gemm-relu.cc",
3690 "test/gemm-microkernel-tester.h",
3691 "src/xnnpack/AlignedAllocator.h",
3692 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3693 deps = MICROKERNEL_TEST_DEPS,
3694)
3695
3696xnnpack_unit_test(
Marat Dukhan1c587112020-04-08 20:04:28 -07003697 name = "f32_gemm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003698 srcs = [
Marat Dukhan1c587112020-04-08 20:04:28 -07003699 "test/f32-gemm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003700 "test/gemm-microkernel-tester.h",
3701 "src/xnnpack/AlignedAllocator.h",
3702 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3703 deps = MICROKERNEL_TEST_DEPS,
3704)
3705
3706xnnpack_unit_test(
Marat Dukhan1c587112020-04-08 20:04:28 -07003707 name = "f32_gemminc_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003708 srcs = [
Marat Dukhan1c587112020-04-08 20:04:28 -07003709 "test/f32-gemminc-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003710 "test/gemm-microkernel-tester.h",
3711 "src/xnnpack/AlignedAllocator.h",
3712 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3713 deps = MICROKERNEL_TEST_DEPS,
3714)
3715
3716xnnpack_unit_test(
Frank Barchardb1966592020-05-12 13:47:06 -07003717 name = "f16_hswish_test",
3718 srcs = [
3719 "test/f16-hswish.cc",
3720 "test/hswish-microkernel-tester.h",
3721 ] + MICROKERNEL_TEST_HDRS,
3722 deps = MICROKERNEL_TEST_DEPS,
3723)
3724
3725xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003726 name = "f32_hswish_test",
3727 srcs = [
3728 "test/f32-hswish.cc",
3729 "test/hswish-microkernel-tester.h",
3730 ] + MICROKERNEL_TEST_HDRS,
3731 deps = MICROKERNEL_TEST_DEPS,
3732)
3733
3734xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07003735 name = "f32_maxpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003736 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07003737 "test/f32-maxpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003738 "test/maxpool-microkernel-tester.h",
3739 ] + MICROKERNEL_TEST_HDRS,
3740 deps = MICROKERNEL_TEST_DEPS,
3741)
3742
3743xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07003744 name = "f32_pavgpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003745 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07003746 "test/f32-pavgpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003747 "test/avgpool-microkernel-tester.h",
3748 "src/xnnpack/AlignedAllocator.h",
3749 ] + MICROKERNEL_TEST_HDRS,
3750 deps = MICROKERNEL_TEST_DEPS,
3751)
3752
3753xnnpack_unit_test(
Marat Dukhan1c587112020-04-08 20:04:28 -07003754 name = "f32_ppmm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003755 srcs = [
Marat Dukhan1c587112020-04-08 20:04:28 -07003756 "test/f32-ppmm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003757 "test/gemm-microkernel-tester.h",
3758 "src/xnnpack/AlignedAllocator.h",
3759 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
3760 deps = MICROKERNEL_TEST_DEPS,
3761)
3762
3763xnnpack_unit_test(
Frank Barchardb1966592020-05-12 13:47:06 -07003764 name = "f16_prelu_test",
3765 srcs = [
3766 "test/f16-prelu.cc",
3767 "test/prelu-microkernel-tester.h",
3768 "src/xnnpack/AlignedAllocator.h",
3769 ] + MICROKERNEL_TEST_HDRS,
3770 deps = MICROKERNEL_TEST_DEPS,
3771)
3772
3773xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003774 name = "f32_prelu_test",
3775 srcs = [
3776 "test/f32-prelu.cc",
3777 "test/prelu-microkernel-tester.h",
3778 "src/xnnpack/AlignedAllocator.h",
3779 ] + MICROKERNEL_TEST_HDRS,
3780 deps = MICROKERNEL_TEST_DEPS,
3781)
3782
3783xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07003784 name = "f32_raddexpminusmax_test",
3785 srcs = [
3786 "test/f32-raddexpminusmax.cc",
3787 "test/raddexpminusmax-microkernel-tester.h",
3788 ] + MICROKERNEL_TEST_HDRS,
3789 deps = MICROKERNEL_TEST_DEPS,
3790)
3791
3792xnnpack_unit_test(
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07003793 name = "f32_raddextexp_test",
3794 srcs = [
3795 "test/f32-raddextexp.cc",
3796 "test/raddextexp-microkernel-tester.h",
3797 ] + MICROKERNEL_TEST_HDRS,
3798 deps = MICROKERNEL_TEST_DEPS,
3799)
3800
3801xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07003802 name = "f32_raddstoreexpminusmax_test",
3803 srcs = [
3804 "test/f32-raddstoreexpminusmax.cc",
3805 "test/raddstoreexpminusmax-microkernel-tester.h",
3806 ] + MICROKERNEL_TEST_HDRS,
3807 deps = MICROKERNEL_TEST_DEPS,
3808)
3809
3810xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07003811 name = "f32_rmax_test",
3812 srcs = [
3813 "test/f32-rmax.cc",
3814 "test/rmax-microkernel-tester.h",
3815 ] + MICROKERNEL_TEST_HDRS,
3816 deps = MICROKERNEL_TEST_DEPS,
3817)
3818
3819xnnpack_unit_test(
Marat Dukhan346a9e52019-11-15 09:06:30 -08003820 name = "f32_sigmoid_test",
3821 srcs = [
3822 "test/f32-sigmoid.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08003823 "test/vunary-microkernel-tester.h",
Marat Dukhan346a9e52019-11-15 09:06:30 -08003824 ] + MICROKERNEL_TEST_HDRS,
3825 deps = MICROKERNEL_TEST_DEPS,
3826)
3827
3828xnnpack_unit_test(
Marat Dukhan355ab432020-04-09 19:01:52 -07003829 name = "f32_spmm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003830 srcs = [
Marat Dukhan355ab432020-04-09 19:01:52 -07003831 "test/f32-spmm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003832 "test/spmm-microkernel-tester.h",
3833 "src/xnnpack/AlignedAllocator.h",
3834 ] + MICROKERNEL_TEST_HDRS,
3835 deps = MICROKERNEL_TEST_DEPS,
3836)
3837
3838xnnpack_unit_test(
Frank Barchardd793f6c2020-05-08 13:37:43 -07003839 name = "f16_vadd_minmax_test",
3840 srcs = [
3841 "test/f16-vadd-minmax.cc",
3842 "test/vbinary-microkernel-tester.h",
3843 ] + MICROKERNEL_TEST_HDRS,
3844 deps = MICROKERNEL_TEST_DEPS,
3845)
3846
3847xnnpack_unit_test(
3848 name = "f16_vaddc_minmax_test",
3849 srcs = [
3850 "test/f16-vaddc-minmax.cc",
3851 "test/vbinaryc-microkernel-tester.h",
3852 ] + MICROKERNEL_TEST_HDRS,
3853 deps = MICROKERNEL_TEST_DEPS,
3854)
3855
3856xnnpack_unit_test(
3857 name = "f16_vdiv_minmax_test",
3858 srcs = [
3859 "test/f16-vdiv-minmax.cc",
3860 "test/vbinary-microkernel-tester.h",
3861 ] + MICROKERNEL_TEST_HDRS,
3862 deps = MICROKERNEL_TEST_DEPS,
3863)
3864
3865xnnpack_unit_test(
3866 name = "f16_vdivc_minmax_test",
3867 srcs = [
3868 "test/f16-vdivc-minmax.cc",
3869 "test/vbinaryc-microkernel-tester.h",
3870 ] + MICROKERNEL_TEST_HDRS,
3871 deps = MICROKERNEL_TEST_DEPS,
3872)
3873
3874xnnpack_unit_test(
3875 name = "f16_vrdivc_minmax_test",
3876 srcs = [
3877 "test/f16-vrdivc-minmax.cc",
3878 "test/vbinaryc-microkernel-tester.h",
3879 ] + MICROKERNEL_TEST_HDRS,
3880 deps = MICROKERNEL_TEST_DEPS,
3881)
3882
3883xnnpack_unit_test(
3884 name = "f16_vmax_test",
3885 srcs = [
3886 "test/f16-vmax.cc",
3887 "test/vbinary-microkernel-tester.h",
3888 ] + MICROKERNEL_TEST_HDRS,
3889 deps = MICROKERNEL_TEST_DEPS,
3890)
3891
3892xnnpack_unit_test(
3893 name = "f16_vmaxc_test",
3894 srcs = [
3895 "test/f16-vmaxc.cc",
3896 "test/vbinaryc-microkernel-tester.h",
3897 ] + MICROKERNEL_TEST_HDRS,
3898 deps = MICROKERNEL_TEST_DEPS,
3899)
3900
3901xnnpack_unit_test(
3902 name = "f16_vmin_test",
3903 srcs = [
3904 "test/f16-vmin.cc",
3905 "test/vbinary-microkernel-tester.h",
3906 ] + MICROKERNEL_TEST_HDRS,
3907 deps = MICROKERNEL_TEST_DEPS,
3908)
3909
3910xnnpack_unit_test(
3911 name = "f16_vminc_test",
3912 srcs = [
3913 "test/f16-vminc.cc",
3914 "test/vbinaryc-microkernel-tester.h",
3915 ] + MICROKERNEL_TEST_HDRS,
3916 deps = MICROKERNEL_TEST_DEPS,
3917)
3918
3919xnnpack_unit_test(
3920 name = "f16_vmul_minmax_test",
3921 srcs = [
3922 "test/f16-vmul-minmax.cc",
3923 "test/vbinary-microkernel-tester.h",
3924 ] + MICROKERNEL_TEST_HDRS,
3925 deps = MICROKERNEL_TEST_DEPS,
3926)
3927
3928xnnpack_unit_test(
3929 name = "f16_vmulc_minmax_test",
3930 srcs = [
3931 "test/f16-vmulc-minmax.cc",
3932 "test/vbinaryc-microkernel-tester.h",
3933 ] + MICROKERNEL_TEST_HDRS,
3934 deps = MICROKERNEL_TEST_DEPS,
3935)
3936
3937xnnpack_unit_test(
3938 name = "f16_vsub_minmax_test",
3939 srcs = [
3940 "test/f16-vsub-minmax.cc",
3941 "test/vbinary-microkernel-tester.h",
3942 ] + MICROKERNEL_TEST_HDRS,
3943 deps = MICROKERNEL_TEST_DEPS,
3944)
3945
3946xnnpack_unit_test(
3947 name = "f16_vsubc_minmax_test",
3948 srcs = [
3949 "test/f16-vsubc-minmax.cc",
3950 "test/vbinaryc-microkernel-tester.h",
3951 ] + MICROKERNEL_TEST_HDRS,
3952 deps = MICROKERNEL_TEST_DEPS,
3953)
3954
3955xnnpack_unit_test(
3956 name = "f16_vrsubc_minmax_test",
3957 srcs = [
3958 "test/f16-vrsubc-minmax.cc",
3959 "test/vbinaryc-microkernel-tester.h",
3960 ] + MICROKERNEL_TEST_HDRS,
3961 deps = MICROKERNEL_TEST_DEPS,
3962)
3963
3964xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07003965 name = "f32_vabs_test",
3966 srcs = [
3967 "test/f32-vabs.cc",
3968 "test/vunary-microkernel-tester.h",
3969 ] + MICROKERNEL_TEST_HDRS,
3970 deps = MICROKERNEL_TEST_DEPS,
3971)
3972
3973xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003974 name = "f32_vadd_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003975 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003976 "test/f32-vadd-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08003977 "test/vbinary-microkernel-tester.h",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08003978 ] + MICROKERNEL_TEST_HDRS,
3979 deps = MICROKERNEL_TEST_DEPS,
3980)
3981
3982xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003983 name = "f32_vaddc_minmax_test",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08003984 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003985 "test/f32-vaddc-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08003986 "test/vbinaryc-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07003987 ] + MICROKERNEL_TEST_HDRS,
3988 deps = MICROKERNEL_TEST_DEPS,
3989)
3990
3991xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003992 name = "f32_vdiv_minmax_test",
Marat Dukhan77ca6302019-12-06 12:48:15 -08003993 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07003994 "test/f32-vdiv-minmax.cc",
Marat Dukhan77ca6302019-12-06 12:48:15 -08003995 "test/vbinary-microkernel-tester.h",
3996 ] + MICROKERNEL_TEST_HDRS,
3997 deps = MICROKERNEL_TEST_DEPS,
3998)
3999
4000xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004001 name = "f32_vdivc_minmax_test",
Marat Dukhan77ca6302019-12-06 12:48:15 -08004002 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004003 "test/f32-vdivc-minmax.cc",
Marat Dukhan77ca6302019-12-06 12:48:15 -08004004 "test/vbinaryc-microkernel-tester.h",
4005 ] + MICROKERNEL_TEST_HDRS,
4006 deps = MICROKERNEL_TEST_DEPS,
4007)
4008
4009xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004010 name = "f32_vrdivc_minmax_test",
Marat Dukhan77ca6302019-12-06 12:48:15 -08004011 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004012 "test/f32-vrdivc-minmax.cc",
Marat Dukhan77ca6302019-12-06 12:48:15 -08004013 "test/vbinaryc-microkernel-tester.h",
4014 ] + MICROKERNEL_TEST_HDRS,
4015 deps = MICROKERNEL_TEST_DEPS,
4016)
4017
4018xnnpack_unit_test(
Marat Dukhan403b7d42019-12-05 12:49:11 -08004019 name = "f32_vmax_test",
4020 srcs = [
4021 "test/f32-vmax.cc",
4022 "test/vbinary-microkernel-tester.h",
4023 ] + MICROKERNEL_TEST_HDRS,
4024 deps = MICROKERNEL_TEST_DEPS,
4025)
4026
4027xnnpack_unit_test(
4028 name = "f32_vmaxc_test",
4029 srcs = [
4030 "test/f32-vmaxc.cc",
4031 "test/vbinaryc-microkernel-tester.h",
4032 ] + MICROKERNEL_TEST_HDRS,
4033 deps = MICROKERNEL_TEST_DEPS,
4034)
4035
4036xnnpack_unit_test(
4037 name = "f32_vmin_test",
4038 srcs = [
4039 "test/f32-vmin.cc",
4040 "test/vbinary-microkernel-tester.h",
4041 ] + MICROKERNEL_TEST_HDRS,
4042 deps = MICROKERNEL_TEST_DEPS,
4043)
4044
4045xnnpack_unit_test(
4046 name = "f32_vminc_test",
4047 srcs = [
4048 "test/f32-vminc.cc",
4049 "test/vbinaryc-microkernel-tester.h",
4050 ] + MICROKERNEL_TEST_HDRS,
4051 deps = MICROKERNEL_TEST_DEPS,
4052)
4053
4054xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004055 name = "f32_vmul_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004056 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004057 "test/f32-vmul-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08004058 "test/vbinary-microkernel-tester.h",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004059 ] + MICROKERNEL_TEST_HDRS,
4060 deps = MICROKERNEL_TEST_DEPS,
4061)
4062
4063xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004064 name = "f32_vmulc_minmax_test",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004065 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004066 "test/f32-vmulc-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08004067 "test/vbinaryc-microkernel-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004068 ] + MICROKERNEL_TEST_HDRS,
4069 deps = MICROKERNEL_TEST_DEPS,
4070)
4071
4072xnnpack_unit_test(
Frank Barchard2a1049c2020-06-03 02:31:27 -07004073 name = "f16_vmulcaddc_minmax_test",
4074 srcs = [
4075 "test/f16-vmulcaddc-minmax.cc",
4076 "test/vmulcaddc-microkernel-tester.h",
4077 "src/xnnpack/AlignedAllocator.h",
4078 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
4079 deps = MICROKERNEL_TEST_DEPS,
4080)
4081
4082xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07004083 name = "f32_vmulcaddc_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004084 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07004085 "test/f32-vmulcaddc-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004086 "test/vmulcaddc-microkernel-tester.h",
4087 "src/xnnpack/AlignedAllocator.h",
4088 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
4089 deps = MICROKERNEL_TEST_DEPS,
4090)
4091
4092xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07004093 name = "f32_vneg_test",
4094 srcs = [
4095 "test/f32-vneg.cc",
4096 "test/vunary-microkernel-tester.h",
4097 ] + MICROKERNEL_TEST_HDRS,
4098 deps = MICROKERNEL_TEST_DEPS,
4099)
4100
4101xnnpack_unit_test(
Marat Dukhaneecf8fd2020-06-09 08:59:37 -07004102 name = "f32_vrndne_test",
4103 srcs = [
4104 "test/f32-vrndne.cc",
4105 "test/vunary-microkernel-tester.h",
4106 ] + MICROKERNEL_TEST_HDRS,
4107 deps = MICROKERNEL_TEST_DEPS,
4108)
4109
4110xnnpack_unit_test(
4111 name = "f32_vrndz_test",
4112 srcs = [
4113 "test/f32-vrndz.cc",
4114 "test/vunary-microkernel-tester.h",
4115 ] + MICROKERNEL_TEST_HDRS,
4116 deps = MICROKERNEL_TEST_DEPS,
4117)
4118
4119xnnpack_unit_test(
4120 name = "f32_vrndu_test",
4121 srcs = [
4122 "test/f32-vrndu.cc",
4123 "test/vunary-microkernel-tester.h",
4124 ] + MICROKERNEL_TEST_HDRS,
4125 deps = MICROKERNEL_TEST_DEPS,
4126)
4127
4128xnnpack_unit_test(
4129 name = "f32_vrndd_test",
4130 srcs = [
4131 "test/f32-vrndd.cc",
4132 "test/vunary-microkernel-tester.h",
4133 ] + MICROKERNEL_TEST_HDRS,
4134 deps = MICROKERNEL_TEST_DEPS,
4135)
4136
4137xnnpack_unit_test(
Marat Dukhan05ac8e32019-10-21 15:39:33 -07004138 name = "f32_vscale_test",
4139 srcs = [
4140 "test/f32-vscale.cc",
4141 "test/vscale-microkernel-tester.h",
4142 ] + MICROKERNEL_TEST_HDRS,
4143 deps = MICROKERNEL_TEST_DEPS,
4144)
4145
4146xnnpack_unit_test(
Marat Dukhan97579532019-10-18 16:40:39 -07004147 name = "f32_vscaleexpminusmax_test",
4148 srcs = [
4149 "test/f32-vscaleexpminusmax.cc",
4150 "test/vscaleexpminusmax-microkernel-tester.h",
4151 ] + MICROKERNEL_TEST_HDRS,
4152 deps = MICROKERNEL_TEST_DEPS,
4153)
4154
4155xnnpack_unit_test(
Marat Dukhan6f8d4d32019-10-25 17:07:09 -07004156 name = "f32_vscaleextexp_test",
4157 srcs = [
4158 "test/f32-vscaleextexp.cc",
4159 "test/vscaleextexp-microkernel-tester.h",
4160 ] + MICROKERNEL_TEST_HDRS,
4161 deps = MICROKERNEL_TEST_DEPS,
4162)
4163
4164xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07004165 name = "f32_vsqr_test",
4166 srcs = [
4167 "test/f32-vsqr.cc",
4168 "test/vunary-microkernel-tester.h",
4169 ] + MICROKERNEL_TEST_HDRS,
4170 deps = MICROKERNEL_TEST_DEPS,
4171)
4172
4173xnnpack_unit_test(
Marat Dukhan13bafb02020-06-05 00:43:11 -07004174 name = "f32_vsqrdiff_test",
4175 srcs = [
4176 "test/f32-vsqrdiff.cc",
4177 "test/vbinary-microkernel-tester.h",
4178 ] + MICROKERNEL_TEST_HDRS,
4179 deps = MICROKERNEL_TEST_DEPS,
4180)
4181
4182xnnpack_unit_test(
4183 name = "f32_vsqrdiffc_test",
4184 srcs = [
4185 "test/f32-vsqrdiffc.cc",
4186 "test/vbinaryc-microkernel-tester.h",
4187 ] + MICROKERNEL_TEST_HDRS,
4188 deps = MICROKERNEL_TEST_DEPS,
4189)
4190
4191xnnpack_unit_test(
4192 name = "f32_vrsqrdiffc_test",
4193 srcs = [
4194 "test/f32-vrsqrdiffc.cc",
4195 "test/vbinaryc-microkernel-tester.h",
4196 ] + MICROKERNEL_TEST_HDRS,
4197 deps = MICROKERNEL_TEST_DEPS,
4198)
4199
4200xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004201 name = "f32_vsub_minmax_test",
Marat Dukhan97579532019-10-18 16:40:39 -07004202 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004203 "test/f32-vsub-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08004204 "test/vbinary-microkernel-tester.h",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004205 ] + MICROKERNEL_TEST_HDRS,
4206 deps = MICROKERNEL_TEST_DEPS,
4207)
4208
4209xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004210 name = "f32_vsubc_minmax_test",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004211 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004212 "test/f32-vsubc-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08004213 "test/vbinaryc-microkernel-tester.h",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004214 ] + MICROKERNEL_TEST_HDRS,
4215 deps = MICROKERNEL_TEST_DEPS,
4216)
4217
4218xnnpack_unit_test(
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004219 name = "f32_vrsubc_minmax_test",
Marat Dukhanc07cb7f2019-11-14 15:32:05 -08004220 srcs = [
Marat Dukhan91cd2b72020-04-09 23:57:31 -07004221 "test/f32-vrsubc-minmax.cc",
Marat Dukhan1e782c42019-11-21 17:02:40 -08004222 "test/vbinaryc-microkernel-tester.h",
Marat Dukhan97579532019-10-18 16:40:39 -07004223 ] + MICROKERNEL_TEST_HDRS,
4224 deps = MICROKERNEL_TEST_DEPS,
4225)
4226
4227xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07004228 name = "q8_avgpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004229 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07004230 "test/q8-avgpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004231 "test/avgpool-microkernel-tester.h",
4232 "src/xnnpack/AlignedAllocator.h",
4233 ] + MICROKERNEL_TEST_HDRS,
4234 deps = MICROKERNEL_TEST_DEPS,
4235)
4236
4237xnnpack_unit_test(
Marat Dukhande06f492020-04-09 00:19:31 -07004238 name = "q8_igemm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004239 srcs = [
Marat Dukhande06f492020-04-09 00:19:31 -07004240 "test/q8-igemm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004241 "test/gemm-microkernel-tester.h",
4242 "src/xnnpack/AlignedAllocator.h",
4243 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
4244 deps = MICROKERNEL_TEST_DEPS,
4245)
4246
4247xnnpack_unit_test(
Marat Dukhande06f492020-04-09 00:19:31 -07004248 name = "q8_dwconv_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004249 srcs = [
Marat Dukhande06f492020-04-09 00:19:31 -07004250 "test/q8-dwconv-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004251 "test/dwconv-microkernel-tester.h",
4252 "src/xnnpack/AlignedAllocator.h",
4253 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
4254 deps = MICROKERNEL_TEST_DEPS,
4255)
4256
4257xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07004258 name = "q8_gavgpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004259 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07004260 "test/q8-gavgpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004261 "test/gavgpool-microkernel-tester.h",
4262 "src/xnnpack/AlignedAllocator.h",
4263 ] + MICROKERNEL_TEST_HDRS,
4264 deps = MICROKERNEL_TEST_DEPS,
4265)
4266
4267xnnpack_unit_test(
Marat Dukhande06f492020-04-09 00:19:31 -07004268 name = "q8_gemm_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004269 srcs = [
Marat Dukhande06f492020-04-09 00:19:31 -07004270 "test/q8-gemm-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004271 "test/gemm-microkernel-tester.h",
4272 "src/xnnpack/AlignedAllocator.h",
4273 ] + WEIGHTS_PACK_HDRS + MICROKERNEL_TEST_HDRS,
4274 deps = MICROKERNEL_TEST_DEPS,
4275)
4276
4277xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07004278 name = "q8_vadd_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004279 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07004280 "test/q8-vadd-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004281 "test/vadd-microkernel-tester.h",
4282 ] + MICROKERNEL_TEST_HDRS,
4283 deps = MICROKERNEL_TEST_DEPS,
4284)
4285
4286xnnpack_unit_test(
4287 name = "u8_clamp_test",
4288 srcs = [
4289 "test/u8-clamp.cc",
4290 "test/clamp-microkernel-tester.h",
4291 ] + MICROKERNEL_TEST_HDRS,
4292 deps = MICROKERNEL_TEST_DEPS,
4293)
4294
4295xnnpack_unit_test(
4296 name = "u8_lut32norm_test",
4297 srcs = [
4298 "test/u8-lut32norm.cc",
4299 "test/lut-norm-microkernel-tester.h",
4300 ] + MICROKERNEL_TEST_HDRS,
4301 deps = MICROKERNEL_TEST_DEPS,
4302)
4303
4304xnnpack_unit_test(
Marat Dukhan99936602020-04-11 16:47:01 -07004305 name = "u8_maxpool_minmax_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004306 srcs = [
Marat Dukhan99936602020-04-11 16:47:01 -07004307 "test/u8-maxpool-minmax.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004308 "test/maxpool-microkernel-tester.h",
4309 ] + MICROKERNEL_TEST_HDRS,
4310 deps = MICROKERNEL_TEST_DEPS,
4311)
4312
4313xnnpack_unit_test(
4314 name = "u8_rmax_test",
4315 srcs = [
4316 "test/u8-rmax.cc",
4317 "test/rmax-microkernel-tester.h",
4318 ] + MICROKERNEL_TEST_HDRS,
4319 deps = MICROKERNEL_TEST_DEPS,
4320)
4321
4322xnnpack_unit_test(
Marat Dukhan3bb3bfc2020-05-19 17:42:46 -07004323 name = "x32_fill_test",
4324 srcs = [
4325 "test/x32-fill.cc",
4326 "test/fill-microkernel-tester.h",
4327 ] + MICROKERNEL_TEST_HDRS,
4328 deps = MICROKERNEL_TEST_DEPS,
4329)
4330
4331xnnpack_unit_test(
Marat Dukhan08c4a432019-10-03 09:29:21 -07004332 name = "x32_packx_test",
4333 srcs = [
4334 "test/x32-packx.cc",
4335 "test/pack-microkernel-tester.h",
4336 "src/xnnpack/AlignedAllocator.h",
4337 ] + MICROKERNEL_TEST_HDRS,
4338 deps = MICROKERNEL_TEST_DEPS,
4339)
4340
4341xnnpack_unit_test(
4342 name = "x32_pad_test",
4343 srcs = [
4344 "test/x32-pad.cc",
4345 "test/pad-microkernel-tester.h",
4346 ] + MICROKERNEL_TEST_HDRS,
4347 deps = MICROKERNEL_TEST_DEPS,
4348)
4349
4350xnnpack_unit_test(
4351 name = "x32_unpool_test",
4352 srcs = [
4353 "test/x32-unpool.cc",
4354 "test/unpool-microkernel-tester.h",
4355 ] + MICROKERNEL_TEST_HDRS,
4356 deps = MICROKERNEL_TEST_DEPS,
4357)
4358
4359xnnpack_unit_test(
4360 name = "x32_zip_test",
4361 srcs = [
4362 "test/x32-zip.cc",
4363 "test/zip-microkernel-tester.h",
4364 ] + MICROKERNEL_TEST_HDRS,
4365 deps = MICROKERNEL_TEST_DEPS,
4366)
4367
4368xnnpack_unit_test(
4369 name = "x8_lut_test",
4370 srcs = [
4371 "test/x8-lut.cc",
4372 "test/lut-microkernel-tester.h",
4373 ] + MICROKERNEL_TEST_HDRS,
4374 deps = MICROKERNEL_TEST_DEPS,
4375)
4376
4377xnnpack_unit_test(
4378 name = "x8_zip_test",
4379 srcs = [
4380 "test/x8-zip.cc",
4381 "test/zip-microkernel-tester.h",
4382 ] + MICROKERNEL_TEST_HDRS,
4383 deps = MICROKERNEL_TEST_DEPS,
4384)
4385
Marat Dukhanfe7acb62020-03-09 19:30:05 -07004386xnnpack_unit_test(
4387 name = "requantization_test",
4388 srcs = [
4389 "src/xnnpack/requantization-stubs.h",
4390 "test/requantization.cc",
4391 "test/requantization-tester.h",
4392 ] + MICROKERNEL_TEST_HDRS,
4393 deps = MICROKERNEL_TEST_DEPS,
4394)
4395
Marat Dukhan20c3b922020-03-10 03:45:06 -07004396########################## Size tests for the library #########################
Marat Dukhan08c4a432019-10-03 09:29:21 -07004397
4398xnnpack_binary(
Marat Dukhan20c3b922020-03-10 03:45:06 -07004399 name = "operator_size_test",
4400 srcs = ["test/operator-size.c"],
Marat Dukhan8fe54e42019-10-10 14:12:59 -07004401 deps = [":xnnpack_operators_nhwc_f32"],
Marat Dukhan08c4a432019-10-03 09:29:21 -07004402)
4403
Marat Dukhan20c3b922020-03-10 03:45:06 -07004404xnnpack_binary(
4405 name = "subgraph_size_test",
4406 srcs = ["test/subgraph-size.c"],
4407 deps = [":XNNPACK"],
4408)
4409
4410########################### Unit tests for operators ##########################
Marat Dukhan08c4a432019-10-03 09:29:21 -07004411
4412xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07004413 name = "abs_nc_test",
4414 srcs = [
4415 "test/abs-nc.cc",
4416 "test/abs-operator-tester.h",
4417 ],
4418 deps = OPERATOR_TEST_DEPS,
4419)
4420
4421xnnpack_unit_test(
Marat Dukhanb1a0fc32019-12-02 19:32:02 -08004422 name = "add_nd_test",
4423 srcs = [
4424 "test/add-nd.cc",
4425 "test/binary-elementwise-operator-tester.h",
4426 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004427 deps = OPERATOR_TEST_DEPS,
Marat Dukhanb1a0fc32019-12-02 19:32:02 -08004428)
4429
4430xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004431 name = "argmax_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004432 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004433 "test/argmax-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004434 "test/argmax-pooling-operator-tester.h",
4435 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004436 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004437)
4438
4439xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004440 name = "average_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004441 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004442 "test/average-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004443 "test/average-pooling-operator-tester.h",
4444 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004445 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004446)
4447
4448xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004449 name = "channel_shuffle_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004450 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004451 "test/channel-shuffle-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004452 "test/channel-shuffle-operator-tester.h",
4453 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004454 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004455)
4456
4457xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004458 name = "clamp_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004459 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004460 "test/clamp-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004461 "test/clamp-operator-tester.h",
4462 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004463 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004464)
4465
4466xnnpack_unit_test(
Marat Dukhan065b11e2020-05-22 09:49:41 -07004467 name = "constant_pad_nd_test",
4468 srcs = [
4469 "test/constant-pad-nd.cc",
4470 "test/constant-pad-operator-tester.h",
4471 ],
4472 deps = OPERATOR_TEST_DEPS,
4473)
4474
4475xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004476 name = "convolution_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004477 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004478 "test/convolution-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004479 "test/convolution-operator-tester.h",
4480 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004481 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004482)
4483
4484xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004485 name = "convolution_nchw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004486 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004487 "test/convolution-nchw.cc",
4488 "test/convolution-operator-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004489 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004490 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004491)
4492
4493xnnpack_unit_test(
Marat Dukhan4e21b272020-06-04 18:45:01 -07004494 name = "copy_nc_test",
4495 srcs = [
4496 "test/copy-nc.cc",
4497 "test/copy-operator-tester.h",
4498 ],
4499 deps = OPERATOR_TEST_DEPS,
4500)
4501
4502xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004503 name = "deconvolution_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004504 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004505 "test/deconvolution-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004506 "test/deconvolution-operator-tester.h",
4507 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004508 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004509)
4510
4511xnnpack_unit_test(
Marat Dukhan69180502019-12-06 15:00:31 -08004512 name = "divide_nd_test",
4513 srcs = [
4514 "test/binary-elementwise-operator-tester.h",
4515 "test/divide-nd.cc",
4516 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004517 deps = OPERATOR_TEST_DEPS,
Marat Dukhan69180502019-12-06 15:00:31 -08004518)
4519
4520xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004521 name = "fully_connected_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004522 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004523 "test/fully-connected-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004524 "test/fully-connected-operator-tester.h",
4525 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004526 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004527)
4528
4529xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004530 name = "global_average_pooling_nwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004531 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004532 "test/global-average-pooling-nwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004533 "test/global-average-pooling-operator-tester.h",
4534 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004535 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004536)
4537
4538xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004539 name = "global_average_pooling_ncw_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004540 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004541 "test/global-average-pooling-ncw.cc",
4542 "test/global-average-pooling-operator-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004543 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004544 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004545)
4546
4547xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004548 name = "hardswish_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004549 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004550 "test/hardswish-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004551 "test/hardswish-operator-tester.h",
4552 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004553 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004554)
4555
4556xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004557 name = "leaky_relu_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004558 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004559 "test/leaky-relu-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004560 "test/leaky-relu-operator-tester.h",
4561 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004562 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004563)
4564
4565xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004566 name = "max_pooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004567 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004568 "test/max-pooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004569 "test/max-pooling-operator-tester.h",
4570 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004571 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004572)
4573
4574xnnpack_unit_test(
Marat Dukhan79e7f842019-12-05 14:35:50 -08004575 name = "maximum_nd_test",
4576 srcs = [
4577 "test/binary-elementwise-operator-tester.h",
4578 "test/maximum-nd.cc",
4579 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004580 deps = OPERATOR_TEST_DEPS,
Marat Dukhan79e7f842019-12-05 14:35:50 -08004581)
4582
4583xnnpack_unit_test(
4584 name = "minimum_nd_test",
4585 srcs = [
4586 "test/binary-elementwise-operator-tester.h",
4587 "test/minimum-nd.cc",
4588 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004589 deps = OPERATOR_TEST_DEPS,
Marat Dukhan79e7f842019-12-05 14:35:50 -08004590)
4591
4592xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004593 name = "multiply_nd_test",
Marat Dukhanca2733c2019-11-15 23:21:17 -08004594 srcs = [
Marat Dukhanb1a0fc32019-12-02 19:32:02 -08004595 "test/binary-elementwise-operator-tester.h",
Marat Dukhanefc47b82019-11-18 09:25:38 -08004596 "test/multiply-nd.cc",
Marat Dukhanca2733c2019-11-15 23:21:17 -08004597 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004598 deps = OPERATOR_TEST_DEPS,
Marat Dukhanca2733c2019-11-15 23:21:17 -08004599)
4600
4601xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07004602 name = "negate_nc_test",
4603 srcs = [
4604 "test/negate-nc.cc",
4605 "test/negate-operator-tester.h",
4606 ],
4607 deps = OPERATOR_TEST_DEPS,
4608)
4609
4610xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004611 name = "prelu_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004612 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004613 "test/prelu-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004614 "test/prelu-operator-tester.h",
4615 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004616 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004617)
4618
4619xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004620 name = "resize_bilinear_nhwc_test",
Marat Dukhan69722492019-11-11 19:55:50 -08004621 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004622 "test/resize-bilinear-nhwc.cc",
Marat Dukhan69722492019-11-11 19:55:50 -08004623 "test/resize-bilinear-operator-tester.h",
4624 ] + OPERATOR_TEST_PARAMS_HDRS,
Marat Dukhan1b354632020-03-23 12:50:22 -07004625 deps = OPERATOR_TEST_DEPS,
Marat Dukhan69722492019-11-11 19:55:50 -08004626)
4627
4628xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004629 name = "sigmoid_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004630 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004631 "test/sigmoid-nc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004632 "test/sigmoid-operator-tester.h",
4633 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004634 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004635)
4636
4637xnnpack_unit_test(
Marat Dukhanfd8e6892020-01-27 15:25:25 -08004638 name = "softmax_nc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004639 srcs = [
Marat Dukhanfd8e6892020-01-27 15:25:25 -08004640 "test/softmax-nc.cc",
4641 "test/softmax-operator-tester.h",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004642 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004643 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004644)
4645
4646xnnpack_unit_test(
Marat Dukhan5020b962020-06-08 13:30:10 -07004647 name = "square_nc_test",
4648 srcs = [
4649 "test/square-nc.cc",
4650 "test/square-operator-tester.h",
4651 ],
4652 deps = OPERATOR_TEST_DEPS,
4653)
4654
4655xnnpack_unit_test(
Marat Dukhanf7399262020-06-05 10:58:44 -07004656 name = "squared_difference_nd_test",
4657 srcs = [
4658 "test/binary-elementwise-operator-tester.h",
4659 "test/squared-difference-nd.cc",
4660 ],
4661 deps = OPERATOR_TEST_DEPS,
4662)
4663
4664xnnpack_unit_test(
Marat Dukhan05f3f6d2019-12-03 15:13:53 -08004665 name = "subtract_nd_test",
4666 srcs = [
4667 "test/binary-elementwise-operator-tester.h",
4668 "test/subtract-nd.cc",
4669 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004670 deps = OPERATOR_TEST_DEPS,
Marat Dukhan05f3f6d2019-12-03 15:13:53 -08004671)
4672
4673xnnpack_unit_test(
Marat Dukhanefc47b82019-11-18 09:25:38 -08004674 name = "unpooling_nhwc_test",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004675 srcs = [
Marat Dukhanefc47b82019-11-18 09:25:38 -08004676 "test/unpooling-nhwc.cc",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004677 "test/unpooling-operator-tester.h",
4678 ],
Marat Dukhan1b354632020-03-23 12:50:22 -07004679 deps = OPERATOR_TEST_DEPS,
Marat Dukhan08c4a432019-10-03 09:29:21 -07004680)
4681
Chao Mei6ddfc602020-05-13 22:29:36 -07004682############################### Misc unit tests ###############################
4683
4684xnnpack_unit_test(
4685 name = "memory_planner_test",
4686 srcs = [
4687 "test/memory-planner-test.cc",
4688 ],
4689 deps = [
4690 ":XNNPACK",
4691 ":memory_planner",
4692 ],
4693)
4694
Marat Dukhan08c4a432019-10-03 09:29:21 -07004695############################# Build configurations #############################
4696
Marat Dukhanb8642352019-10-30 15:43:02 -07004697# Enables usage of assembly kernels.
Marat Dukhan08c4a432019-10-03 09:29:21 -07004698config_setting(
Marat Dukhanb8642352019-10-30 15:43:02 -07004699 name = "xnn_enable_assembly_explicit_true",
4700 define_values = {"xnn_enable_assembly": "true"},
4701)
4702
4703# Disables usage of assembly kernels.
4704config_setting(
4705 name = "xnn_enable_assembly_explicit_false",
4706 define_values = {"xnn_enable_assembly": "false"},
4707)
4708
Marat Dukhan05702cf2020-03-26 15:41:33 -07004709# Disables usage of HMP-aware optimizations.
4710config_setting(
4711 name = "xnn_enable_hmp_explicit_false",
4712 define_values = {"xnn_enable_hmp": "false"},
4713)
4714
Chao Mei6ddfc602020-05-13 22:29:36 -07004715# Enable usage of optimized memory allocation
4716config_setting(
4717 name = "xnn_enable_memopt_explicit_true",
4718 define_values = {"xnnpack_enable_memopt": "true"},
4719)
4720
4721# Disable usage of optimized memory allocation
4722config_setting(
4723 name = "xnn_enable_memopt_explicit_false",
4724 define_values = {"xnnpack_enable_memopt": "false"},
4725)
4726
Marat Dukhanb8642352019-10-30 15:43:02 -07004727# Builds with -c dbg
4728config_setting(
4729 name = "debug_build",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004730 values = {
Marat Dukhanb8642352019-10-30 15:43:02 -07004731 "compilation_mode": "dbg",
4732 },
4733)
4734
4735# Builds with -c opt
4736config_setting(
4737 name = "optimized_build",
4738 values = {
4739 "compilation_mode": "opt",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004740 },
4741)
4742
4743config_setting(
Marat Dukhanb8642352019-10-30 15:43:02 -07004744 name = "linux_k8",
4745 values = {"cpu": "k8"},
4746)
4747
4748config_setting(
Marat Dukhan582094e2020-04-30 17:21:25 -07004749 name = "linux_arm",
4750 values = {"cpu": "arm"},
Marat Dukhan4e45e662019-10-03 15:40:24 -07004751)
4752
4753config_setting(
Terry Heo68eef3f2020-04-13 22:53:52 -07004754 name = "linux_armhf",
4755 values = {"cpu": "armhf"},
4756)
4757
4758config_setting(
Marat Dukhan582094e2020-04-30 17:21:25 -07004759 name = "linux_aarch64",
4760 values = {"cpu": "aarch64"},
4761)
4762
4763config_setting(
Marat Dukhan08c4a432019-10-03 09:29:21 -07004764 name = "android",
4765 values = {"crosstool_top": "//external:android/crosstool"},
4766)
4767
4768config_setting(
4769 name = "android_armv7",
4770 values = {
4771 "crosstool_top": "//external:android/crosstool",
4772 "cpu": "armeabi-v7a",
4773 },
4774)
4775
4776config_setting(
4777 name = "android_arm64",
4778 values = {
4779 "crosstool_top": "//external:android/crosstool",
4780 "cpu": "arm64-v8a",
4781 },
4782)
4783
4784config_setting(
4785 name = "android_x86",
4786 values = {
4787 "crosstool_top": "//external:android/crosstool",
4788 "cpu": "x86",
4789 },
4790)
4791
4792config_setting(
4793 name = "android_x86_64",
4794 values = {
4795 "crosstool_top": "//external:android/crosstool",
4796 "cpu": "x86_64",
4797 },
4798)
4799
4800config_setting(
Marat Dukhan10a38082020-04-17 03:58:35 -07004801 name = "windows_x86_64",
4802 values = {"cpu": "x64_windows"},
Marat Dukhan9fe932e2020-04-11 17:14:15 -07004803)
4804
4805config_setting(
Marat Dukhan10a38082020-04-17 03:58:35 -07004806 name = "windows_x86_64_clang",
4807 values = {
4808 "compiler": "clang-cl",
4809 "cpu": "x64_windows",
4810 },
4811)
4812
4813config_setting(
4814 name = "windows_x86_64_mingw",
4815 values = {
4816 "compiler": "mingw-gcc",
4817 "cpu": "x64_windows",
4818 },
4819)
4820
4821config_setting(
4822 name = "windows_x86_64_msys",
4823 values = {
4824 "compiler": "msys-gcc",
4825 "cpu": "x64_windows",
4826 },
Marat Dukhan9fe932e2020-04-11 17:14:15 -07004827)
4828
4829config_setting(
Marat Dukhan885ca242019-10-07 09:17:32 -07004830 name = "macos_x86_64",
4831 values = {
4832 "apple_platform_type": "macos",
4833 "cpu": "darwin",
4834 },
4835)
4836
4837config_setting(
Marat Dukhan08c4a432019-10-03 09:29:21 -07004838 name = "emscripten",
Marat Dukhan1a729ec2019-10-07 09:31:44 -07004839 values = {"crosstool_top": "//toolchain:emscripten"},
Marat Dukhan08c4a432019-10-03 09:29:21 -07004840)
4841
4842config_setting(
4843 name = "emscripten_wasm",
4844 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07004845 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004846 "cpu": "wasm",
4847 },
4848)
4849
4850config_setting(
4851 name = "emscripten_wasmsimd",
4852 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07004853 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004854 "cpu": "wasm",
Marat Dukhan81c62602020-05-29 13:22:49 -07004855 "copt": "-msimd128",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004856 },
4857)
4858
4859config_setting(
4860 name = "emscripten_asmjs",
4861 values = {
Marat Dukhan1a729ec2019-10-07 09:31:44 -07004862 "crosstool_top": "//toolchain:emscripten",
Marat Dukhan08c4a432019-10-03 09:29:21 -07004863 "cpu": "asmjs",
4864 },
4865)
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004866
4867config_setting(
4868 name = "ios_armv7",
4869 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004870 "apple_platform_type": "ios",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004871 "cpu": "ios_armv7",
4872 },
4873)
4874
4875config_setting(
4876 name = "ios_arm64",
4877 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004878 "apple_platform_type": "ios",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004879 "cpu": "ios_arm64",
4880 },
4881)
4882
4883config_setting(
4884 name = "ios_arm64e",
4885 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004886 "apple_platform_type": "ios",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004887 "cpu": "ios_arm64e",
4888 },
4889)
4890
4891config_setting(
4892 name = "ios_x86",
4893 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004894 "apple_platform_type": "ios",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004895 "cpu": "ios_i386",
4896 },
4897)
4898
4899config_setting(
4900 name = "ios_x86_64",
4901 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004902 "apple_platform_type": "ios",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004903 "cpu": "ios_x86_64",
4904 },
4905)
4906
4907config_setting(
4908 name = "watchos_armv7k",
4909 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004910 "apple_platform_type": "watchos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004911 "cpu": "watchos_armv7k",
4912 },
4913)
4914
4915config_setting(
4916 name = "watchos_arm64_32",
4917 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004918 "apple_platform_type": "watchos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004919 "cpu": "watchos_arm64_32",
4920 },
4921)
4922
4923config_setting(
4924 name = "watchos_x86",
4925 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004926 "apple_platform_type": "watchos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004927 "cpu": "watchos_i386",
4928 },
4929)
4930
4931config_setting(
4932 name = "watchos_x86_64",
4933 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004934 "apple_platform_type": "watchos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004935 "cpu": "watchos_x86_64",
4936 },
4937)
4938
4939config_setting(
4940 name = "tvos_arm64",
4941 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004942 "apple_platform_type": "tvos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004943 "cpu": "tvos_arm64",
4944 },
4945)
4946
4947config_setting(
4948 name = "tvos_x86_64",
4949 values = {
Marat Dukhanf85fc332020-02-13 00:05:20 -08004950 "apple_platform_type": "tvos",
Marat Dukhan1498d1d2020-02-11 20:00:05 -08004951 "cpu": "tvos_x86_64",
4952 },
4953)