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

# AArch64 assembly
- name: xnn_f16_igemm_minmax_ukernel_1x16__asm_aarch64_neonfp16arith_ld32
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 2
- name: xnn_f16_igemm_minmax_ukernel_1x16__asm_aarch64_neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_4x16__asm_aarch64_neonfp16arith_ld32
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 2
- name: xnn_f16_igemm_minmax_ukernel_4x16__asm_aarch64_neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_6x16__asm_aarch64_neonfp16arith_cortex_a55
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 2
- name: xnn_f16_igemm_minmax_ukernel_6x16__asm_aarch64_neonfp16arith_cortex_a55r0
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_6x16__asm_aarch64_neonfp16arith_cortex_a75
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_6x16__asm_aarch64_neonfp16arith_ld32
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 2
- name: xnn_f16_igemm_minmax_ukernel_6x16__asm_aarch64_neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4

# ARM NEON+FP16ARITH
- name: xnn_f16_igemm_minmax_ukernel_1x8__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_1x16__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_4x8__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_4x16__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_6x8__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_6x16__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_8x8__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4
- name: xnn_f16_igemm_minmax_ukernel_8x16__neonfp16arith_ld64
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 4

# x86 AVX
- name: xnn_f16_igemm_minmax_ukernel_1x8__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_1x16__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_3x16__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_4x8__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_4x16__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_5x8__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_5x16__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_6x8__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_7x8__avx2_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1

# x86 AVX512FP16
- name: xnn_f16_igemm_minmax_ukernel_1x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_4x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_5x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_6x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_7x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_8x32__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1

- name: xnn_f16_igemm_minmax_ukernel_1x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_4x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_5x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_6x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_7x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
- name: xnn_f16_igemm_minmax_ukernel_8x64__avx512fp16_broadcast
  init: xnn_init_f16_minmax_scalar_params
  pack: xnn_pack_f16_conv_goki_w
  k-block: 1
