# Copyright 2021 Google LLC
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.


# ARMv6 SIMD
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x1c4__armsimd32
  init: xnn_init_qu8_conv_minmax_fp32_armsimd32_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 4
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x2c4__armsimd32
  init: xnn_init_qu8_conv_minmax_fp32_armsimd32_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 4
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x1c4__armsimd32
  init: xnn_init_qu8_conv_minmax_fp32_armsimd32_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 4
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x2c4__armsimd32
  init: xnn_init_qu8_conv_minmax_fp32_armsimd32_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 4

# ARM NEON
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x8__neon_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neon_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x16__neon_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neon_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x16__neonv8_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neonv8_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x8__neon_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neon_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x16__neon_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neon_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x16__neonv8_mlal_lane
  init: xnn_init_qu8_conv_minmax_fp32_neonv8_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 SSE
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 SSE
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 AVX
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 AVX
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 AVX2
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x8c8__avx2
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x8c8__avx2
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x8c8__avx2
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x8c8__avx2
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 AVX256SKX
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x8c8__avx256skx
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# x86 AVX512
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_5x16c8__avx512skx
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_7x16c8__avx512skx
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_8x16c8__avx512skx
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x16c8__avx512skx_prfm
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_5x16c8__avx512skx_prfm
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_7x16c8__avx512skx_prfm
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_8x16c8__avx512skx_prfm
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# WAsm SIMD
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c2s4__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4c8__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c2s4__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4c8__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c2s4__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4c8__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c2s4__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld64
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4c8__wasmsimd_dot16x2_ld128
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 8

# Scalar
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x2__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_1x4__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x2__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_2x4__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x2__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_3x4__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x2__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_fmagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_imagic
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
- name: xnn_qu8_gemm_minmax_fp32_ukernel_4x4__scalar_lrintf
  init: xnn_init_qu8_conv_minmax_fp32_scalar_params
  pack: xnn_pack_qu8_gemm_goi_w
  k-block: 1
