1# Copyright 2019 Google LLC 2# 3# This source code is licensed under the BSD-style license found in the 4# LICENSE file in the root directory of this source tree. 5 6# ARM NEON 7- name: xnn_f32_spmm_minmax_ukernel_4x1__neon 8 init: xnn_init_f32_minmax_scalar_params 9 k-block: 1 10- name: xnn_f32_spmm_minmax_ukernel_4x1__neon_pipelined 11 init: xnn_init_f32_minmax_scalar_params 12 k-block: 1 13- name: xnn_f32_spmm_minmax_ukernel_4x1__neon_x2 14 init: xnn_init_f32_minmax_scalar_params 15 k-block: 2 16- name: xnn_f32_spmm_minmax_ukernel_4x1__neonfma 17 init: xnn_init_f32_minmax_scalar_params 18 k-block: 1 19- name: xnn_f32_spmm_minmax_ukernel_4x1__neonfma_pipelined 20 init: xnn_init_f32_minmax_scalar_params 21 k-block: 1 22- name: xnn_f32_spmm_minmax_ukernel_4x1__neonfma_x2 23 init: xnn_init_f32_minmax_scalar_params 24 k-block: 2 25- name: xnn_f32_spmm_minmax_ukernel_4x2__neonfma 26 init: xnn_init_f32_minmax_scalar_params 27 k-block: 1 28 arch: 29 - aarch64 30- name: xnn_f32_spmm_minmax_ukernel_4x4__neonfma 31 init: xnn_init_f32_minmax_scalar_params 32 k-block: 1 33 arch: 34 - aarch64 35- name: xnn_f32_spmm_minmax_ukernel_8x1__neon 36 init: xnn_init_f32_minmax_scalar_params 37 k-block: 1 38- name: xnn_f32_spmm_minmax_ukernel_8x1__neon_pipelined 39 init: xnn_init_f32_minmax_scalar_params 40 k-block: 1 41- name: xnn_f32_spmm_minmax_ukernel_8x1__neon_x2 42 init: xnn_init_f32_minmax_scalar_params 43 k-block: 2 44- name: xnn_f32_spmm_minmax_ukernel_8x1__neonfma 45 init: xnn_init_f32_minmax_scalar_params 46 k-block: 1 47- name: xnn_f32_spmm_minmax_ukernel_8x1__neonfma_pipelined 48 init: xnn_init_f32_minmax_scalar_params 49 k-block: 1 50- name: xnn_f32_spmm_minmax_ukernel_8x1__neonfma_x2 51 init: xnn_init_f32_minmax_scalar_params 52 k-block: 2 53- name: xnn_f32_spmm_minmax_ukernel_8x2__neonfma 54 init: xnn_init_f32_minmax_scalar_params 55 k-block: 1 56 arch: 57 - aarch64 58- name: xnn_f32_spmm_minmax_ukernel_8x4__neonfma 59 init: xnn_init_f32_minmax_scalar_params 60 k-block: 1 61 arch: 62 - aarch64 63- name: xnn_f32_spmm_minmax_ukernel_12x1__neon 64 init: xnn_init_f32_minmax_scalar_params 65 k-block: 1 66- name: xnn_f32_spmm_minmax_ukernel_12x1__neonfma 67 init: xnn_init_f32_minmax_scalar_params 68 k-block: 1 69- name: xnn_f32_spmm_minmax_ukernel_12x2__neonfma 70 init: xnn_init_f32_minmax_scalar_params 71 k-block: 1 72 arch: 73 - aarch64 74- name: xnn_f32_spmm_minmax_ukernel_12x4__neonfma 75 init: xnn_init_f32_minmax_scalar_params 76 k-block: 1 77 arch: 78 - aarch64 79- name: xnn_f32_spmm_minmax_ukernel_16x1__neon 80 init: xnn_init_f32_minmax_scalar_params 81 k-block: 1 82- name: xnn_f32_spmm_minmax_ukernel_16x1__neon_pipelined 83 init: xnn_init_f32_minmax_scalar_params 84 k-block: 1 85- name: xnn_f32_spmm_minmax_ukernel_16x1__neon_x2 86 init: xnn_init_f32_minmax_scalar_params 87 k-block: 2 88- name: xnn_f32_spmm_minmax_ukernel_16x1__neonfma 89 init: xnn_init_f32_minmax_scalar_params 90 k-block: 1 91- name: xnn_f32_spmm_minmax_ukernel_16x1__neonfma_pipelined 92 init: xnn_init_f32_minmax_scalar_params 93 k-block: 1 94- name: xnn_f32_spmm_minmax_ukernel_16x1__neonfma_x2 95 init: xnn_init_f32_minmax_scalar_params 96 k-block: 2 97- name: xnn_f32_spmm_minmax_ukernel_16x2__neonfma 98 init: xnn_init_f32_minmax_scalar_params 99 k-block: 1 100 arch: 101 - aarch64 102- name: xnn_f32_spmm_minmax_ukernel_16x4__neonfma 103 init: xnn_init_f32_minmax_scalar_params 104 k-block: 1 105 arch: 106 - aarch64 107- name: xnn_f32_spmm_minmax_ukernel_32x1__neon 108 init: xnn_init_f32_minmax_scalar_params 109 k-block: 1 110- name: xnn_f32_spmm_minmax_ukernel_32x1__neon_pipelined 111 init: xnn_init_f32_minmax_scalar_params 112 k-block: 1 113- name: xnn_f32_spmm_minmax_ukernel_32x1__neon_x2 114 init: xnn_init_f32_minmax_scalar_params 115 k-block: 2 116- name: xnn_f32_spmm_minmax_ukernel_32x1__neonfma 117 init: xnn_init_f32_minmax_scalar_params 118 k-block: 1 119- name: xnn_f32_spmm_minmax_ukernel_32x1__neonfma_pipelined 120 init: xnn_init_f32_minmax_scalar_params 121 k-block: 1 122- name: xnn_f32_spmm_minmax_ukernel_32x1__neonfma_x2 123 init: xnn_init_f32_minmax_scalar_params 124 k-block: 2 125- name: xnn_f32_spmm_minmax_ukernel_32x2__neonfma 126 init: xnn_init_f32_minmax_scalar_params 127 k-block: 1 128 arch: 129 - aarch64 130- name: xnn_f32_spmm_minmax_ukernel_32x4__neonfma 131 init: xnn_init_f32_minmax_scalar_params 132 k-block: 1 133 arch: 134 - aarch64 135# x86 SSE 136- name: xnn_f32_spmm_minmax_ukernel_4x1__sse 137 init: xnn_init_f32_minmax_sse_params 138 k-block: 1 139- name: xnn_f32_spmm_minmax_ukernel_8x1__sse 140 init: xnn_init_f32_minmax_sse_params 141 k-block: 1 142- name: xnn_f32_spmm_minmax_ukernel_16x1__sse 143 init: xnn_init_f32_minmax_sse_params 144 k-block: 1 145- name: xnn_f32_spmm_minmax_ukernel_32x1__sse 146 init: xnn_init_f32_minmax_sse_params 147 k-block: 1 148# WAsm SIMD 149- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm 150 init: xnn_init_f32_minmax_wasmsimd_params 151 k-block: 1 152- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_pipelined 153 init: xnn_init_f32_minmax_wasmsimd_params 154 k-block: 1 155- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_pipelined_x2 156 init: xnn_init_f32_minmax_wasmsimd_params 157 k-block: 2 158- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_x2 159 init: xnn_init_f32_minmax_wasmsimd_params 160 k-block: 2 161- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_arm_x4 162 init: xnn_init_f32_minmax_wasmsimd_params 163 k-block: 4 164- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86 165 init: xnn_init_f32_minmax_wasmsimd_params 166 k-block: 1 167- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_pipelined 168 init: xnn_init_f32_minmax_wasmsimd_params 169 k-block: 1 170- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_pipelined_x2 171 init: xnn_init_f32_minmax_wasmsimd_params 172 k-block: 2 173- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_x2 174 init: xnn_init_f32_minmax_wasmsimd_params 175 k-block: 2 176- name: xnn_f32_spmm_minmax_ukernel_4x1__wasmsimd_x86_x4 177 init: xnn_init_f32_minmax_wasmsimd_params 178 k-block: 4 179- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm 180 init: xnn_init_f32_minmax_wasmsimd_params 181 k-block: 1 182- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_pipelined 183 init: xnn_init_f32_minmax_wasmsimd_params 184 k-block: 1 185- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_pipelined_x2 186 init: xnn_init_f32_minmax_wasmsimd_params 187 k-block: 2 188- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_x2 189 init: xnn_init_f32_minmax_wasmsimd_params 190 k-block: 2 191- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_arm_x4 192 init: xnn_init_f32_minmax_wasmsimd_params 193 k-block: 4 194- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86 195 init: xnn_init_f32_minmax_wasmsimd_params 196 k-block: 1 197- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_pipelined 198 init: xnn_init_f32_minmax_wasmsimd_params 199 k-block: 1 200- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_pipelined_x2 201 init: xnn_init_f32_minmax_wasmsimd_params 202 k-block: 2 203- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_x2 204 init: xnn_init_f32_minmax_wasmsimd_params 205 k-block: 2 206- name: xnn_f32_spmm_minmax_ukernel_8x1__wasmsimd_x86_x4 207 init: xnn_init_f32_minmax_wasmsimd_params 208 k-block: 4 209- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm 210 init: xnn_init_f32_minmax_wasmsimd_params 211 k-block: 1 212- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_pipelined 213 init: xnn_init_f32_minmax_wasmsimd_params 214 k-block: 1 215- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_pipelined_x2 216 init: xnn_init_f32_minmax_wasmsimd_params 217 k-block: 2 218- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_x2 219 init: xnn_init_f32_minmax_wasmsimd_params 220 k-block: 2 221- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_arm_x4 222 init: xnn_init_f32_minmax_wasmsimd_params 223 k-block: 4 224- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86 225 init: xnn_init_f32_minmax_wasmsimd_params 226 k-block: 1 227- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_pipelined 228 init: xnn_init_f32_minmax_wasmsimd_params 229 k-block: 1 230- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_pipelined_x2 231 init: xnn_init_f32_minmax_wasmsimd_params 232 k-block: 2 233- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_x2 234 init: xnn_init_f32_minmax_wasmsimd_params 235 k-block: 2 236- name: xnn_f32_spmm_minmax_ukernel_16x1__wasmsimd_x86_x4 237 init: xnn_init_f32_minmax_wasmsimd_params 238 k-block: 4 239- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm 240 init: xnn_init_f32_minmax_wasmsimd_params 241 k-block: 1 242- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_pipelined 243 init: xnn_init_f32_minmax_wasmsimd_params 244 k-block: 1 245- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_pipelined_x2 246 init: xnn_init_f32_minmax_wasmsimd_params 247 k-block: 2 248- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_x2 249 init: xnn_init_f32_minmax_wasmsimd_params 250 k-block: 2 251- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_arm_x4 252 init: xnn_init_f32_minmax_wasmsimd_params 253 k-block: 4 254- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86 255 init: xnn_init_f32_minmax_wasmsimd_params 256 k-block: 1 257- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_pipelined 258 init: xnn_init_f32_minmax_wasmsimd_params 259 k-block: 1 260- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_pipelined_x2 261 init: xnn_init_f32_minmax_wasmsimd_params 262 k-block: 2 263- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_x2 264 init: xnn_init_f32_minmax_wasmsimd_params 265 k-block: 2 266- name: xnn_f32_spmm_minmax_ukernel_32x1__wasmsimd_x86_x4 267 init: xnn_init_f32_minmax_wasmsimd_params 268 k-block: 4 269# Scalar 270- name: xnn_f32_spmm_minmax_ukernel_1x1__scalar 271 init: xnn_init_f32_minmax_scalar_params 272 k-block: 1 273- name: xnn_f32_spmm_minmax_ukernel_1x1__scalar_pipelined 274 init: xnn_init_f32_minmax_scalar_params 275 k-block: 1 276- name: xnn_f32_spmm_minmax_ukernel_2x1__scalar 277 init: xnn_init_f32_minmax_scalar_params 278 k-block: 1 279- name: xnn_f32_spmm_minmax_ukernel_2x1__scalar_pipelined 280 init: xnn_init_f32_minmax_scalar_params 281 k-block: 1 282- name: xnn_f32_spmm_minmax_ukernel_4x1__scalar 283 init: xnn_init_f32_minmax_scalar_params 284 k-block: 1 285- name: xnn_f32_spmm_minmax_ukernel_4x1__scalar_pipelined 286 init: xnn_init_f32_minmax_scalar_params 287 k-block: 1 288- name: xnn_f32_spmm_minmax_ukernel_8x1__scalar 289 init: xnn_init_f32_minmax_scalar_params 290 k-block: 1 291- name: xnn_f32_spmm_minmax_ukernel_8x1__scalar_pipelined 292 init: xnn_init_f32_minmax_scalar_params 293 k-block: 1 294- name: xnn_f32_spmm_minmax_ukernel_8x2__scalar 295 init: xnn_init_f32_minmax_scalar_params 296 k-block: 1 297- name: xnn_f32_spmm_minmax_ukernel_8x4__scalar 298 init: xnn_init_f32_minmax_scalar_params 299 k-block: 1 300