• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2021 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 #pragma once
7 
8 #include <stdint.h>
9 #include <stddef.h>
10 
11 #include <xnnpack/common.h>
12 #include <xnnpack/params.h>
13 
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
19 
20 #define DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(fn_name)     \
21   XNN_INTERNAL void fn_name(                                      \
22     union xnn_qu8_conv_minmax_params params[XNN_MIN_ELEMENTS(1)], \
23     uint8_t kernel_zero_point,                                    \
24     float scale,                                                  \
25     uint8_t output_zero_point,                                    \
26     uint8_t output_min,                                           \
27     uint8_t output_max);
28 
29 DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_scalar_fmagic_params)
30 DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_scalar_imagic_params)
31 DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_scalar_lrintf_params)
32 
33 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
34   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_neon_params)
35   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_neonv8_params)
36   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_rndnu_neon_params)
37 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
38 
39 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
40   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_sse2_params)
41   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_avx2_params)
42   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_avx512_params)
43 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
44 
45 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
46   DECLARE_INIT_QU8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_conv_minmax_fp32_wasmsimd_params)
47 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
48 
49 
50 #define DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(fn_name)     \
51   XNN_INTERNAL void fn_name(                                      \
52     union xnn_qs8_conv_minmax_params params[XNN_MIN_ELEMENTS(1)], \
53     float scale,                                                  \
54     int8_t output_zero_point,                                     \
55     int8_t output_min,                                            \
56     int8_t output_max);
57 
58 DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params)
59 DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params)
60 DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params)
61 
62 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
63   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_neon_params)
64   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_neonv8_params)
65   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_rndnu_neon_params)
66 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
67 
68 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
69   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_sse2_params)
70   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_sse4_params)
71   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_avx2_params)
72   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_avx512_params)
73 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
74 
75 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
76   DECLARE_INIT_QS8_CONV_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_conv_minmax_fp32_wasmsimd_params)
77 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
78 
79 
80 XNN_INTERNAL void xnn_init_qc8_scale_fp32_params(
81   size_t channels,
82   size_t channels_tile,
83   size_t stride,
84   const float scale[XNN_MIN_ELEMENTS(1)],
85   void* packed_w);
86 
87 
88 #define DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(fn_name)     \
89   XNN_INTERNAL void fn_name(                                 \
90     union xnn_qs8_minmax_params params[XNN_MIN_ELEMENTS(1)], \
91     int8_t output_zero_point,                                \
92     int8_t output_min,                                       \
93     int8_t output_max);
94 
95 DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_scalar_fmagic_params)
96 DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_scalar_imagic_params)
97 DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_scalar_lrintf_params)
98 
99 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
100   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_neon_params)
101   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_neonv8_params)
102 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
103 
104 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
105   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_sse2_params)
106   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_sse4_params)
107   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_avx2_params)
108   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_avx512_params)
109 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
110 
111 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
112   DECLARE_INIT_QS8_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_minmax_wasmsimd_params)
113 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
114 
115 
116 #define DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(fn_name)            \
117   XNN_INTERNAL void fn_name(                                         \
118     union xnn_qs8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)], \
119     int32_t bias,                                                    \
120     float scale,                                                     \
121     int8_t output_zero_point,                                        \
122     int8_t output_min,                                               \
123     int8_t output_max);
124 
125 DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_scalar_fmagic_params)
126 DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_scalar_imagic_params)
127 DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_scalar_lrintf_params)
128 
129 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
130   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_neon_params)
131   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_neonv8_params)
132   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_rndnu_neon_params)
133 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
134 
135 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
136   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_sse2_params)
137   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_sse4_params)
138 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
139 
140 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
141   DECLARE_INIT_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qs8_avgpool_minmax_fp32_wasmsimd_params)
142 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
143 
144 
145 #define DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(fn_name)          \
146   XNN_INTERNAL void fn_name(                                         \
147     union xnn_qs8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)], \
148     int32_t bias,                                                    \
149     float scale);
150 
151 DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_scalar_fmagic_params)
152 DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_scalar_imagic_params)
153 DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_scalar_lrintf_params)
154 
155 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
156   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_neon_params)
157   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_neonv8_params)
158   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_rndnu_neon_params)
159 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
160 
161 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
162   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_sse2_params)
163   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_sse4_params)
164 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
165 
166 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
167   DECLARE_UPDATE_QS8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qs8_avgpool_minmax_fp32_wasmsimd_params)
168 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
169 
170 
171 #define DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(fn_name)            \
172   XNN_INTERNAL void fn_name(                                         \
173     union xnn_qu8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)], \
174     int32_t bias,                                                    \
175     float scale,                                                     \
176     uint8_t output_zero_point,                                       \
177     uint8_t output_min,                                              \
178     uint8_t output_max);
179 
180 DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_scalar_fmagic_params)
181 DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_scalar_imagic_params)
182 DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_scalar_lrintf_params)
183 
184 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
185   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_neon_params)
186   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_neonv8_params)
187   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_rndnu_neon_params)
188 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
189 
190 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
191   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_sse2_params)
192   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_sse4_params)
193 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
194 
195 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
196   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_fp32_wasmsimd_params)
197 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
198 
199 DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_scalar_params)
200 
201 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
202   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_neon_params)
203 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
204 
205 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
206   DECLARE_INIT_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_init_qu8_avgpool_minmax_sse2_params)
207 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
208 
209 
210 #define DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(fn_name)          \
211   XNN_INTERNAL void fn_name(                                         \
212     union xnn_qu8_avgpool_minmax_params params[XNN_MIN_ELEMENTS(1)], \
213     int32_t bias,                                                    \
214     float scale);
215 
216 DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_scalar_fmagic_params)
217 DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_scalar_imagic_params)
218 DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_scalar_lrintf_params)
219 
220 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
221   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_neon_params)
222   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_neonv8_params)
223   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_rndnu_neon_params)
224 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
225 
226 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
227   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_sse2_params)
228   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_sse4_params)
229 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
230 
231 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
232   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_fp32_wasmsimd_params)
233 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
234 
235 DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_scalar_params)
236 
237 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
238   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_neon_params)
239 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
240 
241 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
242   DECLARE_UPDATE_QU8_AVGPOOL_PARAMS_FUNCTION(xnn_update_qu8_avgpool_minmax_sse2_params)
243 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
244 
245 
246 #define DECLARE_INIT_F16_SCALEMINMAX_PARAMS_FUNCTION(fn_name)     \
247   XNN_INTERNAL void fn_name(                                      \
248     union xnn_f16_scaleminmax_params params[XNN_MIN_ELEMENTS(1)], \
249     uint16_t scale,                                               \
250     uint16_t min,                                                 \
251     uint16_t max);
252 
253 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
254   DECLARE_INIT_F16_SCALEMINMAX_PARAMS_FUNCTION(xnn_init_f16_scaleminmax_neon_params)
255 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
256 
257 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
258   DECLARE_INIT_F16_SCALEMINMAX_PARAMS_FUNCTION(xnn_init_f16_scaleminmax_avx_params)
259 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
260 
261 
262 #define DECLARE_UPDATE_F16_SCALEMINMAX_PARAMS_FUNCTION(fn_name)   \
263   XNN_INTERNAL void fn_name(                                      \
264     union xnn_f16_scaleminmax_params params[XNN_MIN_ELEMENTS(1)], \
265     uint16_t scale);
266 
267 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
268   DECLARE_UPDATE_F16_SCALEMINMAX_PARAMS_FUNCTION(xnn_update_f16_scaleminmax_neon_params)
269 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
270 
271 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
272   DECLARE_UPDATE_F16_SCALEMINMAX_PARAMS_FUNCTION(xnn_update_f16_scaleminmax_avx_params)
273 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
274 
275 
276 #define DECLARE_INIT_F32_SCALEMINMAX_PARAMS_FUNCTION(fn_name)     \
277   XNN_INTERNAL void fn_name(                                      \
278     union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)], \
279     float scale,                                                  \
280     float min,                                                    \
281     float max);
282 
283 DECLARE_INIT_F32_SCALEMINMAX_PARAMS_FUNCTION(xnn_init_f32_scaleminmax_scalar_params)
284 
285 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
286   DECLARE_INIT_F32_SCALEMINMAX_PARAMS_FUNCTION(xnn_init_f32_scaleminmax_sse_params)
287 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
288 
289 
290 #define DECLARE_UPDATE_F32_SCALEMINMAX_PARAMS_FUNCTION(fn_name)   \
291   XNN_INTERNAL void fn_name(                                      \
292     union xnn_f32_scaleminmax_params params[XNN_MIN_ELEMENTS(1)], \
293     float scale);
294 
295 DECLARE_UPDATE_F32_SCALEMINMAX_PARAMS_FUNCTION(xnn_update_f32_scaleminmax_scalar_params)
296 
297 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
298   DECLARE_UPDATE_F32_SCALEMINMAX_PARAMS_FUNCTION(xnn_update_f32_scaleminmax_sse_params)
299 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
300 
301 
302 XNN_INTERNAL void xnn_init_f32_gavgpool_params(
303   union xnn_f32_gavgpool_params params[XNN_MIN_ELEMENTS(1)],
304   float multiplier,
305   float output_min,
306   float output_max,
307   uint32_t width);
308 
309 XNN_INTERNAL void xnn_update_f32_gavgpool_params(
310   union xnn_f32_gavgpool_params* params,
311   float multiplier,
312   uint32_t width);
313 
314 XNN_INTERNAL void xnn_init_scalar_f32_gavgpool_params(
315   union xnn_f32_gavgpool_params params[XNN_MIN_ELEMENTS(1)],
316   float multiplier,
317   float output_min,
318   float output_max,
319   uint32_t width);
320 
321 
322 #define DECLARE_INIT_F32_DEFAULT_PARAMS_FUNCTION(fn_name)      \
323   XNN_INTERNAL void fn_name(                                   \
324     union xnn_f32_default_params params[XNN_MIN_ELEMENTS(1)]);
325 
326 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
327   DECLARE_INIT_F32_DEFAULT_PARAMS_FUNCTION(xnn_init_f32_default_avx_params)
328 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
329 
330 
331 #define DECLARE_INIT_F16_MINMAX_PARAMS_FUNCTION(fn_name)     \
332   XNN_INTERNAL void fn_name(                                 \
333     union xnn_f16_minmax_params params[XNN_MIN_ELEMENTS(1)], \
334     uint16_t output_min,                                     \
335     uint16_t output_max);
336 
337 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
338   DECLARE_INIT_F16_MINMAX_PARAMS_FUNCTION(xnn_init_f16_minmax_neon_params)
339 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
340 
341 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
342   DECLARE_INIT_F16_MINMAX_PARAMS_FUNCTION(xnn_init_f16_minmax_avx_params)
343 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
344 
345 
346 #define DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(fn_name)     \
347   XNN_INTERNAL void fn_name(                                 \
348     union xnn_f32_minmax_params params[XNN_MIN_ELEMENTS(1)], \
349     float output_min,                                        \
350     float output_max);
351 
352 DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(xnn_init_f32_minmax_params)
353 
354 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
355   DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(xnn_init_f32_minmax_sse_params)
356   DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(xnn_init_f32_minmax_avx_params)
357 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
358 
359 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
360   DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(xnn_init_f32_minmax_wasmsimd_params)
361 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
362 
363 DECLARE_INIT_F32_MINMAX_PARAMS_FUNCTION(xnn_init_f32_minmax_scalar_params)
364 
365 
366 #define DECLARE_INIT_F16_HSWISH_PARAMS_FUNCTION(fn_name) \
367   XNN_INTERNAL void fn_name(                             \
368     union xnn_f16_hswish_params params[XNN_MIN_ELEMENTS(1)]);
369 
370 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
371   DECLARE_INIT_F16_HSWISH_PARAMS_FUNCTION(xnn_init_f16_hswish_neon_params)
372 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
373 
374 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
375   DECLARE_INIT_F16_HSWISH_PARAMS_FUNCTION(xnn_init_f16_hswish_avx_params)
376 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
377 
378 
379 #define DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(fn_name) \
380   XNN_INTERNAL void fn_name(                             \
381     union xnn_f32_hswish_params params[XNN_MIN_ELEMENTS(1)]);
382 
383 DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(xnn_init_f32_hswish_scalar_params)
384 
385 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
386   DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(xnn_init_f32_hswish_sse_params)
387   DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(xnn_init_f32_hswish_avx_params)
388   DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(xnn_init_f32_hswish_avx512_params)
389 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
390 
391 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
392   DECLARE_INIT_F32_HSWISH_PARAMS_FUNCTION(xnn_init_f32_hswish_wasmsimd_params)
393 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
394 
395 
396 #define DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(fn_name)      \
397   XNN_INTERNAL void fn_name(                                   \
398     union xnn_f32_sigmoid_params params[XNN_MIN_ELEMENTS(1)]);
399 
400 DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_scalar_rr2_lut2048_p1_params)
401 DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_scalar_rr2_lut64_p2_params)
402 DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_scalar_rr2_p5_params)
403 
404 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
405   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neon_rr2_lut2048_p1_params)
406   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neon_rr2_lut64_p2_params)
407   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neon_rr2_p5_params)
408   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neonfma_rr1_lut2048_p1_params)
409   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neonfma_rr1_lut64_p2_params)
410   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_neonfma_rr1_p5_params)
411 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
412 
413 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
414   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_sse2_rr2_lut64_p2_params)
415   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_sse2_rr2_p5_params)
416   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_avx_rr2_p5_params)
417   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_avx2_rr1_p5_params)
418   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_avx512_rr1_lut16_p3_params)
419   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_avx512_rr2_lut32_p2_params)
420   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_avx512_rr1_p5_params)
421 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
422 
423 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
424   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_wasmsimd_rr2_lut64_p2_params)
425   DECLARE_INIT_F32_SIGMOID_PARAMS_FUNCTION(xnn_init_f32_sigmoid_wasmsimd_rr2_p5_params)
426 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
427 
428 
429 #define DECLARE_INIT_F32_ABS_PARAMS_FUNCTION(fn_name)      \
430   XNN_INTERNAL void fn_name(                               \
431     union xnn_f32_abs_params params[XNN_MIN_ELEMENTS(1)]);
432 
433 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
434   DECLARE_INIT_F32_ABS_PARAMS_FUNCTION(xnn_init_f32_abs_sse_params)
435   DECLARE_INIT_F32_ABS_PARAMS_FUNCTION(xnn_init_f32_abs_avx_params)
436   DECLARE_INIT_F32_ABS_PARAMS_FUNCTION(xnn_init_f32_abs_avx512_params)
437 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
438 
439 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
440   DECLARE_INIT_F32_ABS_PARAMS_FUNCTION(xnn_init_f32_abs_wasmsimd_params)
441 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
442 
443 
444 #define DECLARE_INIT_F32_NEG_PARAMS_FUNCTION(fn_name)      \
445   XNN_INTERNAL void fn_name(                               \
446     union xnn_f32_neg_params params[XNN_MIN_ELEMENTS(1)]);
447 
448 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
449   DECLARE_INIT_F32_NEG_PARAMS_FUNCTION(xnn_init_f32_neg_sse_params)
450   DECLARE_INIT_F32_NEG_PARAMS_FUNCTION(xnn_init_f32_neg_avx_params)
451   DECLARE_INIT_F32_NEG_PARAMS_FUNCTION(xnn_init_f32_neg_avx512_params)
452 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
453 
454 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
455   DECLARE_INIT_F32_NEG_PARAMS_FUNCTION(xnn_init_f32_neg_wasmsimd_params)
456 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
457 
458 
459 #define DECLARE_INIT_F32_RND_PARAMS_FUNCTION(fn_name)      \
460   XNN_INTERNAL void fn_name(                               \
461     union xnn_f32_rnd_params params[XNN_MIN_ELEMENTS(1)]);
462 
463 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
464   DECLARE_INIT_F32_RND_PARAMS_FUNCTION(xnn_init_f32_rnd_sse2_params)
465   DECLARE_INIT_F32_RND_PARAMS_FUNCTION(xnn_init_f32_rnd_avx_params)
466 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
467 
468 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
469   DECLARE_INIT_F32_RND_PARAMS_FUNCTION(xnn_init_f32_rnd_wasmsimd_params)
470 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
471 
472 
473 #define DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(fn_name)     \
474   XNN_INTERNAL void fn_name(                              \
475     union xnn_f32_elu_params params[XNN_MIN_ELEMENTS(1)], \
476     float prescale,                                       \
477     float alpha,                                          \
478     float beta);
479 
480 DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_scalar_rr2_lut16_p3_params)
481 DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_scalar_rr2_p6_params)
482 
483 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
484   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_neon_rr2_lut16_p3_params)
485   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_neon_rr2_p6_params)
486   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_neonfma_rr1_lut16_p3_params)
487   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_neonfma_rr1_p6_params)
488 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
489 
490 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
491   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_sse2_rr2_lut16_p3_params)
492   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_sse2_rr2_p6_params)
493   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx_rr2_lut16_p3_params)
494   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx_rr2_lut4_p4_params)
495   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx_rr2_p6_params)
496   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx2_rr1_lut16_p3_params)
497   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx2_rr1_lut8_p4_params)
498   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx2_rr1_lut4_p4_params)
499   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx2_rr1_p6_params)
500   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx512_rr1_lut16_p3_params)
501   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_avx512_rr1_p6_params)
502 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
503 
504 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
505   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_wasmsimd_rr2_lut16_p3_params)
506   DECLARE_INIT_F32_ELU_PARAMS_FUNCTION(xnn_init_f32_elu_wasmsimd_rr2_p6_params)
507 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
508 
509 
510 #define DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(fn_name)      \
511   XNN_INTERNAL void fn_name(                                   \
512     union xnn_f32_expminus_params params[XNN_MIN_ELEMENTS(1)]);
513 
514 DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_scalar_rr2_lut64_p2_params)
515 DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_scalar_rr2_p5_params)
516 
517 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
518   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_neon_rr2_lut64_p2_params)
519   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_neon_rr2_p5_params)
520   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_neonfma_rr1_lut64_p2_params)
521   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_neonfma_rr1_p5_params)
522 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
523 
524 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
525   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_sse2_rr2_p5_params)
526   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_avx2_rr1_p5_params)
527   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_avx512_rr1_p5_params)
528 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
529 
530 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
531   DECLARE_INIT_F32_EXPMINUS_PARAMS_FUNCTION(xnn_init_f32_expminus_wasmsimd_rr2_p5_params)
532 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
533 
534 
535 #define DECLARE_INIT_F32_LRELU_PARAMS_FUNCTION(fn_name)     \
536   XNN_INTERNAL void fn_name(                                \
537     union xnn_f32_lrelu_params params[XNN_MIN_ELEMENTS(1)], \
538     float slope);
539 
540 DECLARE_INIT_F32_LRELU_PARAMS_FUNCTION(xnn_init_f32_lrelu_scalar_params)
541 
542 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
543   DECLARE_INIT_F32_LRELU_PARAMS_FUNCTION(xnn_init_f32_lrelu_sse_params)
544   DECLARE_INIT_F32_LRELU_PARAMS_FUNCTION(xnn_init_f32_lrelu_avx_params)
545 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
546 
547 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
548   DECLARE_INIT_F32_LRELU_PARAMS_FUNCTION(xnn_init_f32_lrelu_wasmsimd_params)
549 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
550 
551 
552 #define DECLARE_INIT_F32_SQRT_PARAMS_FUNCTION(fn_name)      \
553   XNN_INTERNAL void fn_name(                                \
554     union xnn_f32_sqrt_params params[XNN_MIN_ELEMENTS(1)]);
555 
556 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
557   DECLARE_INIT_F32_SQRT_PARAMS_FUNCTION(xnn_init_f32_sqrt_avx_params)
558   DECLARE_INIT_F32_SQRT_PARAMS_FUNCTION(xnn_init_f32_sqrt_fma_params)
559   DECLARE_INIT_F32_SQRT_PARAMS_FUNCTION(xnn_init_f32_sqrt_avx512_params)
560 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
561 
562 
563 XNN_INTERNAL void xnn_init_f32_chw_params(
564   union xnn_f32_chw_params params[XNN_MIN_ELEMENTS(1)],
565   uint32_t width,
566   float output_min,
567   float output_max);
568 
569 XNN_INTERNAL void xnn_update_f32_chw_params(
570   union xnn_f32_chw_params* params,
571   uint32_t width);
572 
573 XNN_INTERNAL void xnn_init_scalar_f32_chw_params(
574   union xnn_f32_chw_params params[XNN_MIN_ELEMENTS(1)],
575   uint32_t width,
576   float output_min,
577   float output_max);
578 
579 
580 #define DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(fn_name)     \
581   XNN_INTERNAL void fn_name(                                \
582     union xnn_s8_minmax_params params[XNN_MIN_ELEMENTS(1)], \
583     int8_t output_min,                                      \
584     int8_t output_max);
585 
586 DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(xnn_init_s8_minmax_scalar_params)
587 
588 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
589   DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(xnn_init_s8_minmax_neon_params)
590 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
591 
592 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
593   DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(xnn_init_s8_minmax_sse2_params)
594   DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(xnn_init_s8_minmax_sse4_params)
595 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
596 
597 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
598   DECLARE_INIT_S8_MINMAX_PARAMS_FUNCTION(xnn_init_s8_minmax_wasmsimd_params)
599 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
600 
601 
602 #define DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(fn_name)      \
603   XNN_INTERNAL void fn_name(                                 \
604     union xnn_u8_minmax_params params[XNN_MIN_ELEMENTS(1)],  \
605     uint8_t output_min,                                      \
606     uint8_t output_max);
607 
608 DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(xnn_init_u8_minmax_params)
609 DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(xnn_init_u8_minmax_scalar_params)
610 
611 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
612   DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(xnn_init_u8_minmax_neon_params)
613 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
614 
615 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
616   DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(xnn_init_u8_minmax_sse2_params)
617 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
618 
619 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
620   DECLARE_INIT_U8_MINMAX_PARAMS_FUNCTION(xnn_init_u8_minmax_wasmsimd_params)
621 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
622 
623 
624 #define DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(fn_name)        \
625   XNN_INTERNAL void fn_name(                                        \
626     union xnn_qu8_addsub_minmax_params params[XNN_MIN_ELEMENTS(1)], \
627     uint8_t x_zero_point,                                           \
628     uint8_t y_zero_point,                                           \
629     uint8_t output_zero_point,                                      \
630     float x_output_scale,                                           \
631     float y_output_scale,                                           \
632     uint8_t output_min,                                             \
633     uint8_t output_max);
634 
635 DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_scalar_params)
636 
637 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
638   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_neon_params)
639 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
640 
641 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
642   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_sse2_params)
643   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_sse4_params)
644   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_avx2_params)
645   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_avx512_params)
646 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
647 
648 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
649   DECLARE_INIT_QU8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_add_minmax_wasmsimd_params)
650 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
651 
652 
653 #define DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(fn_name)        \
654   XNN_INTERNAL void fn_name(                                        \
655     union xnn_qs8_addsub_minmax_params params[XNN_MIN_ELEMENTS(1)], \
656     int8_t x_zero_point,                                            \
657     int8_t y_zero_point,                                            \
658     int8_t output_zero_point,                                       \
659     float x_output_scale,                                           \
660     float y_output_scale,                                           \
661     int8_t output_min,                                              \
662     int8_t output_max);
663 
664 DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_scalar_params)
665 
666 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
667   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_neon_params)
668 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
669 
670 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
671   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_sse2_params)
672   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_sse4_mul16_params)
673   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_sse4_mul32_params)
674   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_avx2_params)
675   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_avx512_params)
676 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
677 
678 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
679   DECLARE_INIT_QS8_ADD_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_add_minmax_wasmsimd_params)
680 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
681 
682 
683 #define DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(fn_name)     \
684   XNN_INTERNAL void fn_name(                                     \
685     union xnn_qu8_mul_minmax_params params[XNN_MIN_ELEMENTS(1)], \
686     uint8_t a_zero_point,                                        \
687     uint8_t b_zero_point,                                        \
688     uint8_t output_zero_point,                                   \
689     float product_output_scale,                                  \
690     uint8_t output_min,                                          \
691     uint8_t output_max);
692 
693 DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_fp32_scalar_params)
694 
695 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
696   DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_fp32_neon_params)
697   DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_fp32_neonv8_params)
698   DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_rndnu_neon_params)
699 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
700 
701 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
702   DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_fp32_sse2_params)
703 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
704 
705 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
706   DECLARE_INIT_QU8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qu8_mul_minmax_fp32_wasmsimd_params)
707 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
708 
709 
710 #define DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(fn_name)     \
711   XNN_INTERNAL void fn_name(                                     \
712     union xnn_qs8_mul_minmax_params params[XNN_MIN_ELEMENTS(1)], \
713     int8_t a_zero_point,                                         \
714     int8_t b_zero_point,                                         \
715     int8_t output_zero_point,                                    \
716     float product_output_scale,                                  \
717     int8_t output_min,                                           \
718     int8_t output_max);
719 
720 DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_scalar_params)
721 
722 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
723   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_neon_params)
724   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_neonv8_params)
725   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_rndnu_neon_params)
726 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
727 
728 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
729   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_sse2_params)
730   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_sse4_params)
731 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
732 
733 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
734   DECLARE_INIT_QS8_MUL_MINMAX_PARAMS_FUNCTION(xnn_init_qs8_mul_minmax_fp32_wasmsimd_params)
735 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
736 
737 
738 #define DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(fn_name)      \
739   XNN_INTERNAL void fn_name(                                   \
740     union xnn_f16_f32_cvt_params params[XNN_MIN_ELEMENTS(1)]);
741 
742 DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_scalar_params)
743 
744 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
745   DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_neon_params)
746 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
747 
748 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
749   DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_sse_int16_params)
750   DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_sse_int32_params)
751 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
752 
753 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
754   DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_wasmsimd_int16_params)
755   DECLARE_INIT_F16_F32_CVT_PARAMS_FUNCTION(xnn_init_f16_f32_cvt_wasmsimd_int32_params)
756 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
757 
758 
759 #define DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(fn_name)      \
760   XNN_INTERNAL void fn_name(                                   \
761     union xnn_f32_f16_cvt_params params[XNN_MIN_ELEMENTS(1)]);
762 
763 DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_scalar_bitcast_params)
764 DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_scalar_fabsf_params)
765 
766 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
767   DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_neon_params)
768 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
769 
770 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
771   DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_sse2_params)
772   DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_f16c_params)
773 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
774 
775 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
776   DECLARE_INIT_F32_F16_CVT_PARAMS_FUNCTION(xnn_init_f32_f16_cvt_wasmsimd_params)
777 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
778 
779 
780 #define DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(fn_name)     \
781   XNN_INTERNAL void fn_name(                                  \
782     union xnn_f32_qs8_cvt_params params[XNN_MIN_ELEMENTS(1)], \
783     float scale,                                              \
784     int8_t zero_point,                                        \
785     int8_t output_min,                                        \
786     int8_t output_max);
787 
788 DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_scalar_fmagic_params)
789 DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_scalar_imagic_params)
790 DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_scalar_lrintf_params)
791 
792 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
793   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_neon_params)
794   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_neonv8_params)
795 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
796 
797 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
798   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_sse2_params)
799   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_sse4_params)
800   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_avx_params)
801   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_avx2_params)
802   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_avx512_params)
803 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
804 
805 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
806   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_wasmsimd_cvt_params)
807   DECLARE_INIT_F32_QS8_CVT_PARAMS_FUNCTION(xnn_init_f32_qs8_cvt_wasmsimd_magic_params)
808 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
809 
810 
811 #define DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(fn_name)     \
812   XNN_INTERNAL void fn_name(                                  \
813     union xnn_f32_qu8_cvt_params params[XNN_MIN_ELEMENTS(1)], \
814     float scale,                                              \
815     uint8_t zero_point,                                       \
816     uint8_t output_min,                                       \
817     uint8_t output_max);
818 
819 DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_scalar_fmagic_params)
820 DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_scalar_imagic_params)
821 DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_scalar_lrintf_params)
822 
823 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
824   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_neon_params)
825   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_neonv8_params)
826 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
827 
828 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
829   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_sse2_params)
830   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_avx_params)
831   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_avx2_params)
832   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_avx512_params)
833 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
834 
835 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
836   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_wasmsimd_cvt_params)
837   DECLARE_INIT_F32_QU8_CVT_PARAMS_FUNCTION(xnn_init_f32_qu8_cvt_wasmsimd_magic_params)
838 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
839 
840 
841 #define DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(fn_name)     \
842   XNN_INTERNAL void fn_name(                                  \
843     union xnn_qs8_f32_cvt_params params[XNN_MIN_ELEMENTS(1)], \
844     float scale,                                              \
845     int8_t zero_point);
846 
847 DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_scalar_params)
848 
849 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
850   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_neon_params)
851 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
852 
853 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
854   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_sse2_params)
855   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_sse4_params)
856   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_avx_params)
857   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_avx512_params)
858 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
859 
860 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
861   DECLARE_INIT_QS8_F32_CVT_PARAMS_FUNCTION(xnn_init_qs8_f32_cvt_wasmsimd_params)
862 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
863 
864 
865 #define DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(fn_name)     \
866   XNN_INTERNAL void fn_name(                                  \
867     union xnn_qu8_f32_cvt_params params[XNN_MIN_ELEMENTS(1)], \
868     float scale,                                              \
869     uint8_t zero_point);
870 
871 DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_scalar_params)
872 
873 #if XNN_ARCH_ARM || XNN_ARCH_ARM64
874   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_neon_params)
875 #endif  // XNN_ARCH_ARM || XNN_ARCH_ARM64
876 
877 #if XNN_ARCH_X86 || XNN_ARCH_X86_64
878   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_sse2_params)
879   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_sse4_params)
880   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_avx_params)
881   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_avx512_params)
882 #endif  // XNN_ARCH_X86 || XNN_ARCH_X86_64
883 
884 #if XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
885   DECLARE_INIT_QU8_F32_CVT_PARAMS_FUNCTION(xnn_init_qu8_f32_cvt_wasmsimd_params)
886 #endif  // XNN_ARCH_WASMSIMD || XNN_ARCH_WASMRELAXEDSIMD
887 
888 #ifdef __cplusplus
889 }  // extern "C"
890 #endif
891