# 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.

# AArch32 assembly
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_cortex_a7
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__aarch32_neon_mlal_lane_prfm_cortex_a7
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_cortex_a55
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__aarch32_neondot_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
# AArch64 assembly
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__aarch64_neon_mlal_prfm_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__aarch64_neon_mlal_prfm_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c16__aarch64_neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__aarch64_neon_mlal_lane_prfm_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_cortex_a53
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__aarch64_neon_mlal_lane_prfm_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_cortex_a55
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__aarch64_neondot_ld128
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
  assembly: true
# ARM NEON
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x8c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_1x16c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x8c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_2x16c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x8c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_3x16c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x8c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16__neon_mull_addw_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mlal_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2__neon_mull_ld4r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2s4__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c2s4__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mlal_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_dup
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld1r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neon_mull_ld2r
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4s2__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c4s2__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c8__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c8__neon_mull
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_4x16c16__neon_mlal
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 16
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x8__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x8c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x16__neon_mlal_lane_prfm
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_6x16c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_8x8c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
- name: xnn_qs8_igemm_minmax_rndnu_ukernel_8x16c4__neondot
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
# AArch32 JIT assembly
- name: xnn_generate_qs8_igemm_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_generate_qs8_igemm_rndnu_ukernel_4x8__aarch32_neon_mlal_lane_prfm_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
- name: xnn_generate_qs8_igemm_rndnu_ukernel_4x8c4__aarch32_neondot_ld64
  init: xnn_init_qs8_conv_minmax_rndnu_neon_params
  k-block: 8
  assembly: true
