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