FP32 requantization in QS8 GEMM/IGEMM microkernels for SSE/AVX/XOP
PiperOrigin-RevId: 376966195
diff --git a/test/qs8-igemm-minmax-fp32.yaml b/test/qs8-igemm-minmax-fp32.yaml
index 280ad4f..2c64ba6 100644
--- a/test/qs8-igemm-minmax-fp32.yaml
+++ b/test/qs8-igemm-minmax-fp32.yaml
@@ -3,6 +3,216 @@
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c2__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c2__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c2__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_4x4c2__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__ssse3_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld64
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse2_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__ssse3_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse2_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__sse41_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__avx_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_1x4c8__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_2x4c8__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
+- name: xnn_qs8_gemm_minmax_fp32_ukernel_3x4c8__xop_ld128
+ init: xnn_init_qs8_conv_minmax_fp32_sse4_params
+ k-block: 8
- name: xnn_qs8_igemm_minmax_fp32_ukernel_1x8c8__avx2
init: xnn_init_qs8_conv_minmax_fp32_avx2_params
k-block: 8