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# ARM NEON 7- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__neon_mul16 8 init: xnn_init_qs8_conv_minmax_fp32_neon_params 9- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__neonv8_mul16 10 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 11- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__neon_mul16 12 init: xnn_init_qs8_conv_minmax_fp32_neon_params 13- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__neonv8_mul16 14 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 15- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__neon_mul16 16 init: xnn_init_qs8_conv_minmax_fp32_neon_params 17- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__neonv8_mul16 18 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 19- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__neon_mul16 20 init: xnn_init_qs8_conv_minmax_fp32_neon_params 21- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__neonv8_mul16 22 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 23- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__neon_mul16 24 init: xnn_init_qs8_conv_minmax_fp32_neon_params 25- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__neonv8_mul16 26 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 27- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__neon_mul16 28 init: xnn_init_qs8_conv_minmax_fp32_neon_params 29- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__neonv8_mul16 30 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 31- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__neon_mul16 32 init: xnn_init_qs8_conv_minmax_fp32_neon_params 33- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__neonv8_mul16 34 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 35- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__neon_mul16 36 init: xnn_init_qs8_conv_minmax_fp32_neon_params 37- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__neonv8_mul16 38 init: xnn_init_qs8_conv_minmax_fp32_neonv8_params 39# x86 SSE 40- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__sse2_mul16 41 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 42- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__sse2_mul16_add16 43 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 44- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__sse41_mul16 45 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 46- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__sse41_mul16_add16 47 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 48- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__sse41_mul32 49 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 50- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__sse2_mul16 51 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 52- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__sse2_mul16_add16 53 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 54- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__sse41_mul16 55 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 56- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__sse41_mul16_add16 57 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 58- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__sse41_mul32 59 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 60- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__sse2_mul16 61 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 62- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__sse2_mul16_add16 63 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 64- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__sse41_mul16 65 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 66- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__sse41_mul16_add16 67 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 68- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__sse41_mul32 69 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 70- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__sse2_mul16 71 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 72- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__sse2_mul16_add16 73 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 74- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__sse41_mul16 75 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 76- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__sse41_mul16_add16 77 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 78- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__sse41_mul32 79 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 80- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__sse2_mul16 81 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 82- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__sse41_mul16 83 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 84- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__sse41_mul32 85 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 86- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__sse2_mul16 87 init: xnn_init_qs8_conv_minmax_fp32_sse2_params 88- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__sse41_mul16 89 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 90- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__sse41_mul32 91 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 92# x86 AVX 93- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__avx_mul16 94 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 95- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__avx_mul16_add16 96 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 97- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__avx_mul32 98 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 99- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__avx2_mul32 100 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 101- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__xop_mul16_add16 102 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 103- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__xop_mul32 104 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 105- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__avx_mul16 106 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 107- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__avx_mul16_add16 108 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 109- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__avx_mul32 110 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 111- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__avx2_mul32 112 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 113- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__xop_mul16_add16 114 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 115- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__xop_mul32 116 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 117- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx_mul16 118 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 119- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx_mul16_add16 120 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 121- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx_mul32 122 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 123- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx2_mul16_add16_vpunpck 124 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 125- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx2_mul16_vpmovsx 126 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 127- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx2_mul16_vpunpck 128 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 129- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx2_mul32 130 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 131- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__xop_mul16_add16 132 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 133- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__xop_mul32 134 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 135- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx_mul16 136 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 137- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx_mul16_add16 138 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 139- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx_mul32 140 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 141- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx2_mul16_add16_vpunpck 142 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 143- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx2_mul16_vpmovsx 144 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 145- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx2_mul16_vpunpck 146 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 147- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx2_mul32 148 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 149- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__xop_mul16_add16 150 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 151- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__xop_mul32 152 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 153- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__avx_mul16 154 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 155- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__avx_mul32 156 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 157- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__avx2_mul32 158 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 159- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__xop_mul32 160 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 161- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__avx_mul16 162 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 163- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__avx_mul32 164 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 165- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__avx2_mul32 166 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 167- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__xop_mul32 168 init: xnn_init_qs8_conv_minmax_fp32_sse4_params 169- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__avx2_mul16_add16_vpunpck 170 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 171- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__avx2_mul16_vpmovsx 172 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 173- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__avx2_mul16_vpunpck 174 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 175- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__avx2_mul32 176 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 177- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__avx2_mul16_add16_vpunpck 178 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 179- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__avx2_mul16_vpmovsx 180 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 181- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__avx2_mul16_vpunpck 182 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 183- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__avx2_mul32 184 init: xnn_init_qs8_conv_minmax_fp32_avx2_params 185# x86 AVX512 186- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__avx512skx_mul32 187 init: xnn_init_qs8_conv_minmax_fp32_avx512_params 188- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__avx512skx_mul32 189 init: xnn_init_qs8_conv_minmax_fp32_avx512_params 190- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x9__avx512skx_mul32 191 init: xnn_init_qs8_conv_minmax_fp32_avx512_params 192- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up32x25__avx512skx_mul32 193 init: xnn_init_qs8_conv_minmax_fp32_avx512_params 194# WAsm SIMD 195- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__wasmsimd_mul16 196 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 197- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x9__wasmsimd_mul16_add16 198 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 199- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__wasmsimd_mul16 200 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 201- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up8x25__wasmsimd_mul16_add16 202 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 203- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__wasmsimd_mul16 204 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 205- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x9__wasmsimd_mul16_add16 206 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 207- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__wasmsimd_mul16 208 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 209- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up16x25__wasmsimd_mul16_add16 210 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 211- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__wasmsimd_mul16 212 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 213- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x9__wasmsimd_mul16_add16 214 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 215- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__wasmsimd_mul16 216 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 217- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up24x25__wasmsimd_mul16_add16 218 init: xnn_init_qs8_conv_minmax_fp32_wasmsimd_params 219# WAsm 220- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x9__wasm_fmagic 221 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 222- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x25__wasm_fmagic 223 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 224- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x9__wasm_fmagic 225 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 226- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x25__wasm_fmagic 227 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 228- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x9__wasm_fmagic 229 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 230- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x25__wasm_fmagic 231 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 232# Scalar 233- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x9__scalar_fmagic 234 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 235- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x9__scalar_imagic 236 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 237- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x9__scalar_lrintf 238 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 239- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x25__scalar_fmagic 240 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 241- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x25__scalar_imagic 242 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 243- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up1x25__scalar_lrintf 244 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 245- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x9__scalar_fmagic 246 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 247- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x9__scalar_imagic 248 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 249- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x9__scalar_lrintf 250 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 251- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x25__scalar_fmagic 252 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 253- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x25__scalar_imagic 254 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 255- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up2x25__scalar_lrintf 256 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 257- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x9__scalar_fmagic 258 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 259- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x9__scalar_imagic 260 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 261- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x9__scalar_lrintf 262 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 263- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x25__scalar_fmagic 264 init: xnn_init_qs8_conv_minmax_fp32_scalar_fmagic_params 265- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x25__scalar_imagic 266 init: xnn_init_qs8_conv_minmax_fp32_scalar_imagic_params 267- name: xnn_qs8_dwconv_minmax_fp32_ukernel_up4x25__scalar_lrintf 268 init: xnn_init_qs8_conv_minmax_fp32_scalar_lrintf_params 269