From 10cb371647f52fba2d6cf58f3fb79c0fa0d2fe12 Mon Sep 17 00:00:00 2001 From: Emanuele Scarlata Date: Sun, 10 May 2026 09:34:48 +0000 Subject: [PATCH 1/4] vulkan: add TurboQuant KV cache support (turbo2/3/4, tq3_1s, tq4_1s) - Add dequant shaders for turbo2_0, turbo4_0, tq3_1s with WHT/RHT - Add mul_mat_vec shader for tq3_1s - Add flash attention support for turbo2_0, turbo3_0, turbo4_0 - Fix copy_to_quant/copy_from_quant for TurboQuant types - Fix dequant_funcs_cm2.glsl typo (grid -> g2) - Fix vulkan-shaders-gen: use vulkan1.3 target for _cm1/_int8/q8_1 - Add turbo2_0/turbo4_0 to FA scalar and cm1 shader generation - Add pre-built ggml-vulkan-shaders.hpp with all new shader externs Co-Authored-By: Claude Sonnet 4.6 --- ggml/src/ggml-vulkan/ggml-vulkan-shaders.cpp | 2 + ggml/src/ggml-vulkan/ggml-vulkan-shaders.hpp | 8185 +++++++++++++++++ ggml/src/ggml-vulkan/ggml-vulkan.cpp | 41 +- .../vulkan-shaders/copy_from_quant.comp | 31 +- .../vulkan-shaders/copy_to_quant.comp | 260 +- .../vulkan-shaders/dequant_funcs.glsl | 137 +- .../vulkan-shaders/dequant_funcs_cm2.glsl | 62 +- .../vulkan-shaders/dequant_tq3_1s.comp | 66 + .../vulkan-shaders/dequant_turbo2_0.comp | 23 + .../vulkan-shaders/dequant_turbo4_0.comp | 28 + .../vulkan-shaders/flash_attn_base.glsl | 61 +- .../vulkan-shaders/mul_mat_vec_tq3_1s.comp | 120 + .../ggml-vulkan/vulkan-shaders/turbo_wht.comp | 34 +- .../src/ggml-vulkan/vulkan-shaders/types.glsl | 50 + .../vulkan-shaders/vulkan-shaders-gen.cpp | 29 +- 15 files changed, 8986 insertions(+), 143 deletions(-) create mode 100644 ggml/src/ggml-vulkan/ggml-vulkan-shaders.cpp create mode 100644 ggml/src/ggml-vulkan/ggml-vulkan-shaders.hpp create mode 100644 ggml/src/ggml-vulkan/vulkan-shaders/dequant_tq3_1s.comp create mode 100644 ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo2_0.comp create mode 100644 ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo4_0.comp create mode 100644 ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_tq3_1s.comp diff --git a/ggml/src/ggml-vulkan/ggml-vulkan-shaders.cpp b/ggml/src/ggml-vulkan/ggml-vulkan-shaders.cpp new file mode 100644 index 000000000000..ce7e46516768 --- /dev/null +++ b/ggml/src/ggml-vulkan/ggml-vulkan-shaders.cpp @@ -0,0 +1,2 @@ +#include "ggml-vulkan-shaders.hpp" + diff --git a/ggml/src/ggml-vulkan/ggml-vulkan-shaders.hpp b/ggml/src/ggml-vulkan/ggml-vulkan-shaders.hpp new file mode 100644 index 000000000000..c09cd5aabe2c --- /dev/null +++ b/ggml/src/ggml-vulkan/ggml-vulkan-shaders.hpp @@ -0,0 +1,8185 @@ +#include + +extern const uint64_t abs_f16_len; +extern const unsigned char abs_f16_data[]; + +extern const uint64_t abs_f32_len; +extern const unsigned char abs_f32_data[]; + +extern const uint64_t acc_f32_len; +extern const unsigned char acc_f32_data[]; + +extern const uint64_t add1_f16_f16_len; +extern const unsigned char add1_f16_f16_data[]; + +extern const uint64_t add1_f16_f32_len; +extern const unsigned char add1_f16_f32_data[]; + +extern const uint64_t add1_f32_f32_len; +extern const unsigned char add1_f32_f32_data[]; + +extern const uint64_t add_f16_f16_f16_len; +extern const unsigned char add_f16_f16_f16_data[]; + +extern const uint64_t add_f16_f16_f32_len; +extern const unsigned char add_f16_f16_f32_data[]; + +extern const uint64_t add_f16_f32_f16_len; +extern const unsigned char add_f16_f32_f16_data[]; + +extern const uint64_t add_f16_f32_f32_len; +extern const unsigned char add_f16_f32_f32_data[]; + +extern const uint64_t add_f32_f16_f16_len; +extern const unsigned char add_f32_f16_f16_data[]; + +extern const uint64_t add_f32_f16_f32_len; +extern const unsigned char add_f32_f16_f32_data[]; + +extern const uint64_t add_f32_f32_f16_len; +extern const unsigned char add_f32_f32_f16_data[]; + +extern const uint64_t add_f32_f32_f32_len; +extern const unsigned char add_f32_f32_f32_data[]; + +extern const uint64_t add_id_f32_len; +extern const unsigned char add_id_f32_data[]; + +extern const uint64_t add_rms_f16_f16_f16_len; +extern const unsigned char add_rms_f16_f16_f16_data[]; + +extern const uint64_t add_rms_f16_f16_f32_len; +extern const unsigned char add_rms_f16_f16_f32_data[]; + +extern const uint64_t add_rms_f16_f32_f16_len; +extern const unsigned char add_rms_f16_f32_f16_data[]; + +extern const uint64_t add_rms_f16_f32_f32_len; +extern const unsigned char add_rms_f16_f32_f32_data[]; + +extern const uint64_t add_rms_f32_f16_f16_len; +extern const unsigned char add_rms_f32_f16_f16_data[]; + +extern const uint64_t add_rms_f32_f16_f32_len; +extern const unsigned char add_rms_f32_f16_f32_data[]; + +extern const uint64_t add_rms_f32_f32_f16_len; +extern const unsigned char add_rms_f32_f32_f16_data[]; + +extern const uint64_t add_rms_f32_f32_f32_len; +extern const unsigned char add_rms_f32_f32_f32_data[]; + +extern const uint64_t arange_f32_len; +extern const unsigned char arange_f32_data[]; + +extern const uint64_t argmax_f32_len; +extern const unsigned char argmax_f32_data[]; + +extern const uint64_t argsort_f32_len; +extern const unsigned char argsort_f32_data[]; + +extern const uint64_t argsort_large_f32_len; +extern const unsigned char argsort_large_f32_data[]; + +extern const uint64_t ceil_f16_len; +extern const unsigned char ceil_f16_data[]; + +extern const uint64_t ceil_f32_len; +extern const unsigned char ceil_f32_data[]; + +extern const uint64_t clamp_f32_len; +extern const unsigned char clamp_f32_data[]; + +extern const uint64_t concat_f16_len; +extern const unsigned char concat_f16_data[]; + +extern const uint64_t concat_f32_len; +extern const unsigned char concat_f32_data[]; + +extern const uint64_t concat_i32_len; +extern const unsigned char concat_i32_data[]; + +extern const uint64_t contig_cpy_f16_f16_len; +extern const unsigned char contig_cpy_f16_f16_data[]; + +extern const uint64_t contig_cpy_f16_f32_len; +extern const unsigned char contig_cpy_f16_f32_data[]; + +extern const uint64_t contig_cpy_f32_bf16_len; +extern const unsigned char contig_cpy_f32_bf16_data[]; + +extern const uint64_t contig_cpy_f32_f16_len; +extern const unsigned char contig_cpy_f32_f16_data[]; + +extern const uint64_t contig_cpy_f32_f32_len; +extern const unsigned char contig_cpy_f32_f32_data[]; + +extern const uint64_t contig_cpy_f32_i32_len; +extern const unsigned char contig_cpy_f32_i32_data[]; + +extern const uint64_t contig_cpy_i32_f32_len; +extern const unsigned char contig_cpy_i32_f32_data[]; + +extern const uint64_t conv2d_dw_cwhn_f16_f32_len; +extern const unsigned char conv2d_dw_cwhn_f16_f32_data[]; + +extern const uint64_t conv2d_dw_cwhn_f32_len; +extern const unsigned char conv2d_dw_cwhn_f32_data[]; + +extern const uint64_t conv2d_dw_whcn_f16_f32_len; +extern const unsigned char conv2d_dw_whcn_f16_f32_data[]; + +extern const uint64_t conv2d_dw_whcn_f32_len; +extern const unsigned char conv2d_dw_whcn_f32_data[]; + +extern const uint64_t conv2d_f16_f32_len; +extern const unsigned char conv2d_f16_f32_data[]; + +extern const uint64_t conv2d_f16_f32_cm2_len; +extern const unsigned char conv2d_f16_f32_cm2_data[]; + +extern const uint64_t conv2d_f16_f32_unroll_len; +extern const unsigned char conv2d_f16_f32_unroll_data[]; + +extern const uint64_t conv2d_f32_len; +extern const unsigned char conv2d_f32_data[]; + +extern const uint64_t conv2d_f32_cm2_len; +extern const unsigned char conv2d_f32_cm2_data[]; + +extern const uint64_t conv2d_f32_unroll_len; +extern const unsigned char conv2d_f32_unroll_data[]; + +extern const uint64_t conv_transpose_1d_f32_len; +extern const unsigned char conv_transpose_1d_f32_data[]; + +extern const uint64_t conv_transpose_2d_f16_f32_len; +extern const unsigned char conv_transpose_2d_f16_f32_data[]; + +extern const uint64_t conv_transpose_2d_f16_f32_cm2_len; +extern const unsigned char conv_transpose_2d_f16_f32_cm2_data[]; + +extern const uint64_t conv_transpose_2d_f16_f32_unroll_len; +extern const unsigned char conv_transpose_2d_f16_f32_unroll_data[]; + +extern const uint64_t conv_transpose_2d_f32_len; +extern const unsigned char conv_transpose_2d_f32_data[]; + +extern const uint64_t conv_transpose_2d_f32_cm2_len; +extern const unsigned char conv_transpose_2d_f32_cm2_data[]; + +extern const uint64_t conv_transpose_2d_f32_unroll_len; +extern const unsigned char conv_transpose_2d_f32_unroll_data[]; + +extern const uint64_t cos_f32_len; +extern const unsigned char cos_f32_data[]; + +extern const uint64_t count_equal_i32_len; +extern const unsigned char count_equal_i32_data[]; + +extern const uint64_t count_experts_len; +extern const unsigned char count_experts_data[]; + +extern const uint64_t cpy_f16_f16_len; +extern const unsigned char cpy_f16_f16_data[]; + +extern const uint64_t cpy_f16_f32_len; +extern const unsigned char cpy_f16_f32_data[]; + +extern const uint64_t cpy_f32_bf16_len; +extern const unsigned char cpy_f32_bf16_data[]; + +extern const uint64_t cpy_f32_f16_len; +extern const unsigned char cpy_f32_f16_data[]; + +extern const uint64_t cpy_f32_f32_len; +extern const unsigned char cpy_f32_f32_data[]; + +extern const uint64_t cpy_f32_i32_len; +extern const unsigned char cpy_f32_i32_data[]; + +extern const uint64_t cpy_f32_iq4_nl_len; +extern const unsigned char cpy_f32_iq4_nl_data[]; + +extern const uint64_t cpy_f32_q1_0_len; +extern const unsigned char cpy_f32_q1_0_data[]; + +extern const uint64_t cpy_f32_q4_0_len; +extern const unsigned char cpy_f32_q4_0_data[]; + +extern const uint64_t cpy_f32_q4_1_len; +extern const unsigned char cpy_f32_q4_1_data[]; + +extern const uint64_t cpy_f32_q5_0_len; +extern const unsigned char cpy_f32_q5_0_data[]; + +extern const uint64_t cpy_f32_q5_1_len; +extern const unsigned char cpy_f32_q5_1_data[]; + +extern const uint64_t cpy_f32_q8_0_len; +extern const unsigned char cpy_f32_q8_0_data[]; + +extern const uint64_t cpy_i32_f32_len; +extern const unsigned char cpy_i32_f32_data[]; + +extern const uint64_t cpy_iq4_nl_f32_len; +extern const unsigned char cpy_iq4_nl_f32_data[]; + +extern const uint64_t cpy_q1_0_f32_len; +extern const unsigned char cpy_q1_0_f32_data[]; + +extern const uint64_t cpy_q4_0_f32_len; +extern const unsigned char cpy_q4_0_f32_data[]; + +extern const uint64_t cpy_q4_1_f32_len; +extern const unsigned char cpy_q4_1_f32_data[]; + +extern const uint64_t cpy_q5_0_f32_len; +extern const unsigned char cpy_q5_0_f32_data[]; + +extern const uint64_t cpy_q5_1_f32_len; +extern const unsigned char cpy_q5_1_f32_data[]; + +extern const uint64_t cpy_q8_0_f32_len; +extern const unsigned char cpy_q8_0_f32_data[]; + +extern const uint64_t cpy_tq3_1s_f32_len; +extern const unsigned char cpy_tq3_1s_f32_data[]; + +extern const uint64_t cpy_tq4_1s_f32_len; +extern const unsigned char cpy_tq4_1s_f32_data[]; + +extern const uint64_t cpy_transpose_16_len; +extern const unsigned char cpy_transpose_16_data[]; + +extern const uint64_t cpy_transpose_32_len; +extern const unsigned char cpy_transpose_32_data[]; + +extern const uint64_t cpy_turbo2_0_f32_len; +extern const unsigned char cpy_turbo2_0_f32_data[]; + +extern const uint64_t cpy_turbo3_0_f32_len; +extern const unsigned char cpy_turbo3_0_f32_data[]; + +extern const uint64_t cpy_turbo4_0_f32_len; +extern const unsigned char cpy_turbo4_0_f32_data[]; + +extern const uint64_t cumsum_f32_len; +extern const unsigned char cumsum_f32_data[]; + +extern const uint64_t cumsum_multipass1_f32_len; +extern const unsigned char cumsum_multipass1_f32_data[]; + +extern const uint64_t cumsum_multipass2_f32_len; +extern const unsigned char cumsum_multipass2_f32_data[]; + +extern const uint64_t dequant_f32_len; +extern const unsigned char dequant_f32_data[]; + +extern const uint64_t dequant_iq1_m_len; +extern const unsigned char dequant_iq1_m_data[]; + +extern const uint64_t dequant_iq1_s_len; +extern const unsigned char dequant_iq1_s_data[]; + +extern const uint64_t dequant_iq2_s_len; +extern const unsigned char dequant_iq2_s_data[]; + +extern const uint64_t dequant_iq2_xs_len; +extern const unsigned char dequant_iq2_xs_data[]; + +extern const uint64_t dequant_iq2_xxs_len; +extern const unsigned char dequant_iq2_xxs_data[]; + +extern const uint64_t dequant_iq3_s_len; +extern const unsigned char dequant_iq3_s_data[]; + +extern const uint64_t dequant_iq3_xxs_len; +extern const unsigned char dequant_iq3_xxs_data[]; + +extern const uint64_t dequant_iq4_nl_len; +extern const unsigned char dequant_iq4_nl_data[]; + +extern const uint64_t dequant_iq4_xs_len; +extern const unsigned char dequant_iq4_xs_data[]; + +extern const uint64_t dequant_mxfp4_len; +extern const unsigned char dequant_mxfp4_data[]; + +extern const uint64_t dequant_nvfp4_len; +extern const unsigned char dequant_nvfp4_data[]; + +extern const uint64_t dequant_q1_0_len; +extern const unsigned char dequant_q1_0_data[]; + +extern const uint64_t dequant_q2_k_len; +extern const unsigned char dequant_q2_k_data[]; + +extern const uint64_t dequant_q3_k_len; +extern const unsigned char dequant_q3_k_data[]; + +extern const uint64_t dequant_q4_0_len; +extern const unsigned char dequant_q4_0_data[]; + +extern const uint64_t dequant_q4_1_len; +extern const unsigned char dequant_q4_1_data[]; + +extern const uint64_t dequant_q4_k_len; +extern const unsigned char dequant_q4_k_data[]; + +extern const uint64_t dequant_q5_0_len; +extern const unsigned char dequant_q5_0_data[]; + +extern const uint64_t dequant_q5_1_len; +extern const unsigned char dequant_q5_1_data[]; + +extern const uint64_t dequant_q5_k_len; +extern const unsigned char dequant_q5_k_data[]; + +extern const uint64_t dequant_q6_k_len; +extern const unsigned char dequant_q6_k_data[]; + +extern const uint64_t dequant_q8_0_len; +extern const unsigned char dequant_q8_0_data[]; + +extern const uint64_t dequant_tq3_1s_len; +extern const unsigned char dequant_tq3_1s_data[]; + +extern const uint64_t dequant_tq4_1s_len; +extern const unsigned char dequant_tq4_1s_data[]; + +extern const uint64_t dequant_turbo2_0_len; +extern const unsigned char dequant_turbo2_0_data[]; + +extern const uint64_t dequant_turbo3_0_len; +extern const unsigned char dequant_turbo3_0_data[]; + +extern const uint64_t dequant_turbo4_0_len; +extern const unsigned char dequant_turbo4_0_data[]; + +extern const uint64_t diag_f16_len; +extern const unsigned char diag_f16_data[]; + +extern const uint64_t diag_f32_len; +extern const unsigned char diag_f32_data[]; + +extern const uint64_t diag_mask_inf_f32_len; +extern const unsigned char diag_mask_inf_f32_data[]; + +extern const uint64_t div_f16_f16_f16_len; +extern const unsigned char div_f16_f16_f16_data[]; + +extern const uint64_t div_f16_f16_f32_len; +extern const unsigned char div_f16_f16_f32_data[]; + +extern const uint64_t div_f16_f32_f16_len; +extern const unsigned char div_f16_f32_f16_data[]; + +extern const uint64_t div_f16_f32_f32_len; +extern const unsigned char div_f16_f32_f32_data[]; + +extern const uint64_t div_f32_len; +extern const unsigned char div_f32_data[]; + +extern const uint64_t div_f32_f16_f16_len; +extern const unsigned char div_f32_f16_f16_data[]; + +extern const uint64_t div_f32_f16_f32_len; +extern const unsigned char div_f32_f16_f32_data[]; + +extern const uint64_t div_f32_f32_f16_len; +extern const unsigned char div_f32_f32_f16_data[]; + +extern const uint64_t div_f32_f32_f32_len; +extern const unsigned char div_f32_f32_f32_data[]; + +extern const uint64_t elu_f16_len; +extern const unsigned char elu_f16_data[]; + +extern const uint64_t elu_f32_len; +extern const unsigned char elu_f32_data[]; + +extern const uint64_t exp_f16_len; +extern const unsigned char exp_f16_data[]; + +extern const uint64_t exp_f32_len; +extern const unsigned char exp_f32_data[]; + +extern const uint64_t fa_mask_opt_len; +extern const unsigned char fa_mask_opt_data[]; + +extern const uint64_t fa_split_k_reduce_len; +extern const unsigned char fa_split_k_reduce_data[]; + +extern const uint64_t fill_f16_len; +extern const unsigned char fill_f16_data[]; + +extern const uint64_t fill_f32_len; +extern const unsigned char fill_f32_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_len; +extern const unsigned char flash_attn_f32_f16_f16_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_cm1_len; +extern const unsigned char flash_attn_f32_f16_f16_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_cm2_len; +extern const unsigned char flash_attn_f32_f16_f16_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_f16acc_len; +extern const unsigned char flash_attn_f32_f16_f16_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_f16_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_f16_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_f16_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_f16_fp32_len; +extern const unsigned char flash_attn_f32_f16_f16_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_len; +extern const unsigned char flash_attn_f32_f16_f32_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_cm1_len; +extern const unsigned char flash_attn_f32_f16_f32_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_cm2_len; +extern const unsigned char flash_attn_f32_f16_f32_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_f16acc_len; +extern const unsigned char flash_attn_f32_f16_f32_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_f32_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_f32_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_f32_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_f32_fp32_len; +extern const unsigned char flash_attn_f32_f16_f32_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_iq1_m_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq1_m_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq1_m_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq1_m_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq1_s_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq1_s_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq1_s_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq1_s_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_s_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_s_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_s_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_s_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_xs_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_xs_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_xs_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_xs_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_xxs_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_xxs_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq2_xxs_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq2_xxs_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq3_s_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq3_s_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq3_s_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq3_s_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq3_xxs_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq3_xxs_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq3_xxs_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq3_xxs_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_cm1_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_fp32_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_nl_int8_len; +extern const unsigned char flash_attn_f32_f16_iq4_nl_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_xs_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq4_xs_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_iq4_xs_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_iq4_xs_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_mxfp4_cm2_len; +extern const unsigned char flash_attn_f32_f16_mxfp4_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_mxfp4_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_mxfp4_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_nvfp4_cm2_len; +extern const unsigned char flash_attn_f32_f16_nvfp4_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_nvfp4_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_nvfp4_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q1_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_q1_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q1_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q1_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q2_k_cm2_len; +extern const unsigned char flash_attn_f32_f16_q2_k_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q2_k_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q2_k_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q3_k_cm2_len; +extern const unsigned char flash_attn_f32_f16_q3_k_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q3_k_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q3_k_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_len; +extern const unsigned char flash_attn_f32_f16_q4_0_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_q4_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_0_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_q4_0_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_0_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_0_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_0_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_len; +extern const unsigned char flash_attn_f32_f16_q4_1_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_cm1_len; +extern const unsigned char flash_attn_f32_f16_q4_1_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_1_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_1_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_fp32_len; +extern const unsigned char flash_attn_f32_f16_q4_1_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_1_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_1_int8_len; +extern const unsigned char flash_attn_f32_f16_q4_1_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_k_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_k_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q4_k_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q4_k_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_len; +extern const unsigned char flash_attn_f32_f16_q5_0_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_q5_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_0_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_q5_0_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_0_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_0_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_0_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_len; +extern const unsigned char flash_attn_f32_f16_q5_1_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_cm1_len; +extern const unsigned char flash_attn_f32_f16_q5_1_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_1_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_1_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_fp32_len; +extern const unsigned char flash_attn_f32_f16_q5_1_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_1_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_1_int8_len; +extern const unsigned char flash_attn_f32_f16_q5_1_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_k_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_k_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q5_k_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q5_k_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q6_k_cm2_len; +extern const unsigned char flash_attn_f32_f16_q6_k_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q6_k_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q6_k_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_len; +extern const unsigned char flash_attn_f32_f16_q8_0_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_q8_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_q8_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_f16acc_int8_len; +extern const unsigned char flash_attn_f32_f16_q8_0_f16acc_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_q8_0_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_fp32_int8_len; +extern const unsigned char flash_attn_f32_f16_q8_0_fp32_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_q8_0_int8_len; +extern const unsigned char flash_attn_f32_f16_q8_0_int8_data[]; + +extern const uint64_t flash_attn_f32_f16_tq3_1s_cm2_len; +extern const unsigned char flash_attn_f32_f16_tq3_1s_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_tq3_1s_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_tq3_1s_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo2_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo2_0_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo3_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo3_0_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_f16acc_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_f16acc_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_f16acc_cm1_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_f16acc_cm1_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_f16acc_cm2_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_f16acc_cm2_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_f16acc_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_f16acc_fp32_data[]; + +extern const uint64_t flash_attn_f32_f16_turbo4_0_fp32_len; +extern const unsigned char flash_attn_f32_f16_turbo4_0_fp32_data[]; + +extern const uint64_t floor_f16_len; +extern const unsigned char floor_f16_data[]; + +extern const uint64_t floor_f32_len; +extern const unsigned char floor_f32_data[]; + +extern const uint64_t gated_delta_net_f32_len; +extern const unsigned char gated_delta_net_f32_data[]; + +extern const uint64_t gated_delta_net_f32_nocluster_len; +extern const unsigned char gated_delta_net_f32_nocluster_data[]; + +extern const uint64_t gated_delta_net_f32_shmem_len; +extern const unsigned char gated_delta_net_f32_shmem_data[]; + +extern const uint64_t geglu_erf_f16_len; +extern const unsigned char geglu_erf_f16_data[]; + +extern const uint64_t geglu_erf_f32_len; +extern const unsigned char geglu_erf_f32_data[]; + +extern const uint64_t geglu_f16_len; +extern const unsigned char geglu_f16_data[]; + +extern const uint64_t geglu_f32_len; +extern const unsigned char geglu_f32_data[]; + +extern const uint64_t geglu_quick_f16_len; +extern const unsigned char geglu_quick_f16_data[]; + +extern const uint64_t geglu_quick_f32_len; +extern const unsigned char geglu_quick_f32_data[]; + +extern const uint64_t gelu_erf_f16_len; +extern const unsigned char gelu_erf_f16_data[]; + +extern const uint64_t gelu_erf_f32_len; +extern const unsigned char gelu_erf_f32_data[]; + +extern const uint64_t gelu_f16_len; +extern const unsigned char gelu_f16_data[]; + +extern const uint64_t gelu_f32_len; +extern const unsigned char gelu_f32_data[]; + +extern const uint64_t gelu_quick_f16_len; +extern const unsigned char gelu_quick_f16_data[]; + +extern const uint64_t gelu_quick_f32_len; +extern const unsigned char gelu_quick_f32_data[]; + +extern const uint64_t get_rows_bf16_len; +extern const unsigned char get_rows_bf16_data[]; + +extern const uint64_t get_rows_bf16_f32_len; +extern const unsigned char get_rows_bf16_f32_data[]; + +extern const uint64_t get_rows_f16_len; +extern const unsigned char get_rows_f16_data[]; + +extern const uint64_t get_rows_f16_f32_len; +extern const unsigned char get_rows_f16_f32_data[]; + +extern const uint64_t get_rows_f32_len; +extern const unsigned char get_rows_f32_data[]; + +extern const uint64_t get_rows_f32_f32_len; +extern const unsigned char get_rows_f32_f32_data[]; + +extern const uint64_t get_rows_i32_len; +extern const unsigned char get_rows_i32_data[]; + +extern const uint64_t get_rows_iq1_m_len; +extern const unsigned char get_rows_iq1_m_data[]; + +extern const uint64_t get_rows_iq1_m_f32_len; +extern const unsigned char get_rows_iq1_m_f32_data[]; + +extern const uint64_t get_rows_iq1_s_len; +extern const unsigned char get_rows_iq1_s_data[]; + +extern const uint64_t get_rows_iq1_s_f32_len; +extern const unsigned char get_rows_iq1_s_f32_data[]; + +extern const uint64_t get_rows_iq2_s_len; +extern const unsigned char get_rows_iq2_s_data[]; + +extern const uint64_t get_rows_iq2_s_f32_len; +extern const unsigned char get_rows_iq2_s_f32_data[]; + +extern const uint64_t get_rows_iq2_xs_len; +extern const unsigned char get_rows_iq2_xs_data[]; + +extern const uint64_t get_rows_iq2_xs_f32_len; +extern const unsigned char get_rows_iq2_xs_f32_data[]; + +extern const uint64_t get_rows_iq2_xxs_len; +extern const unsigned char get_rows_iq2_xxs_data[]; + +extern const uint64_t get_rows_iq2_xxs_f32_len; +extern const unsigned char get_rows_iq2_xxs_f32_data[]; + +extern const uint64_t get_rows_iq3_s_len; +extern const unsigned char get_rows_iq3_s_data[]; + +extern const uint64_t get_rows_iq3_s_f32_len; +extern const unsigned char get_rows_iq3_s_f32_data[]; + +extern const uint64_t get_rows_iq3_xxs_len; +extern const unsigned char get_rows_iq3_xxs_data[]; + +extern const uint64_t get_rows_iq3_xxs_f32_len; +extern const unsigned char get_rows_iq3_xxs_f32_data[]; + +extern const uint64_t get_rows_iq4_nl_len; +extern const unsigned char get_rows_iq4_nl_data[]; + +extern const uint64_t get_rows_iq4_nl_f32_len; +extern const unsigned char get_rows_iq4_nl_f32_data[]; + +extern const uint64_t get_rows_iq4_xs_len; +extern const unsigned char get_rows_iq4_xs_data[]; + +extern const uint64_t get_rows_iq4_xs_f32_len; +extern const unsigned char get_rows_iq4_xs_f32_data[]; + +extern const uint64_t get_rows_mxfp4_len; +extern const unsigned char get_rows_mxfp4_data[]; + +extern const uint64_t get_rows_mxfp4_f32_len; +extern const unsigned char get_rows_mxfp4_f32_data[]; + +extern const uint64_t get_rows_nvfp4_len; +extern const unsigned char get_rows_nvfp4_data[]; + +extern const uint64_t get_rows_nvfp4_f32_len; +extern const unsigned char get_rows_nvfp4_f32_data[]; + +extern const uint64_t get_rows_q1_0_len; +extern const unsigned char get_rows_q1_0_data[]; + +extern const uint64_t get_rows_q1_0_f32_len; +extern const unsigned char get_rows_q1_0_f32_data[]; + +extern const uint64_t get_rows_q2_k_len; +extern const unsigned char get_rows_q2_k_data[]; + +extern const uint64_t get_rows_q2_k_f32_len; +extern const unsigned char get_rows_q2_k_f32_data[]; + +extern const uint64_t get_rows_q3_k_len; +extern const unsigned char get_rows_q3_k_data[]; + +extern const uint64_t get_rows_q3_k_f32_len; +extern const unsigned char get_rows_q3_k_f32_data[]; + +extern const uint64_t get_rows_q4_0_len; +extern const unsigned char get_rows_q4_0_data[]; + +extern const uint64_t get_rows_q4_0_f32_len; +extern const unsigned char get_rows_q4_0_f32_data[]; + +extern const uint64_t get_rows_q4_1_len; +extern const unsigned char get_rows_q4_1_data[]; + +extern const uint64_t get_rows_q4_1_f32_len; +extern const unsigned char get_rows_q4_1_f32_data[]; + +extern const uint64_t get_rows_q4_k_len; +extern const unsigned char get_rows_q4_k_data[]; + +extern const uint64_t get_rows_q4_k_f32_len; +extern const unsigned char get_rows_q4_k_f32_data[]; + +extern const uint64_t get_rows_q5_0_len; +extern const unsigned char get_rows_q5_0_data[]; + +extern const uint64_t get_rows_q5_0_f32_len; +extern const unsigned char get_rows_q5_0_f32_data[]; + +extern const uint64_t get_rows_q5_1_len; +extern const unsigned char get_rows_q5_1_data[]; + +extern const uint64_t get_rows_q5_1_f32_len; +extern const unsigned char get_rows_q5_1_f32_data[]; + +extern const uint64_t get_rows_q5_k_len; +extern const unsigned char get_rows_q5_k_data[]; + +extern const uint64_t get_rows_q5_k_f32_len; +extern const unsigned char get_rows_q5_k_f32_data[]; + +extern const uint64_t get_rows_q6_k_len; +extern const unsigned char get_rows_q6_k_data[]; + +extern const uint64_t get_rows_q6_k_f32_len; +extern const unsigned char get_rows_q6_k_f32_data[]; + +extern const uint64_t get_rows_q8_0_len; +extern const unsigned char get_rows_q8_0_data[]; + +extern const uint64_t get_rows_q8_0_f32_len; +extern const unsigned char get_rows_q8_0_f32_data[]; + +extern const uint64_t get_rows_tq3_1s_len; +extern const unsigned char get_rows_tq3_1s_data[]; + +extern const uint64_t get_rows_tq3_1s_f32_len; +extern const unsigned char get_rows_tq3_1s_f32_data[]; + +extern const uint64_t get_rows_tq4_1s_len; +extern const unsigned char get_rows_tq4_1s_data[]; + +extern const uint64_t get_rows_tq4_1s_f32_len; +extern const unsigned char get_rows_tq4_1s_f32_data[]; + +extern const uint64_t get_rows_turbo2_0_len; +extern const unsigned char get_rows_turbo2_0_data[]; + +extern const uint64_t get_rows_turbo2_0_f32_len; +extern const unsigned char get_rows_turbo2_0_f32_data[]; + +extern const uint64_t get_rows_turbo3_0_len; +extern const unsigned char get_rows_turbo3_0_data[]; + +extern const uint64_t get_rows_turbo3_0_f32_len; +extern const unsigned char get_rows_turbo3_0_f32_data[]; + +extern const uint64_t get_rows_turbo4_0_len; +extern const unsigned char get_rows_turbo4_0_data[]; + +extern const uint64_t get_rows_turbo4_0_f32_len; +extern const unsigned char get_rows_turbo4_0_f32_data[]; + +extern const uint64_t group_norm_f32_len; +extern const unsigned char group_norm_f32_data[]; + +extern const uint64_t hardsigmoid_f16_len; +extern const unsigned char hardsigmoid_f16_data[]; + +extern const uint64_t hardsigmoid_f32_len; +extern const unsigned char hardsigmoid_f32_data[]; + +extern const uint64_t hardswish_f16_len; +extern const unsigned char hardswish_f16_data[]; + +extern const uint64_t hardswish_f32_len; +extern const unsigned char hardswish_f32_data[]; + +extern const uint64_t im2col_3d_f32_len; +extern const unsigned char im2col_3d_f32_data[]; + +extern const uint64_t im2col_3d_f32_bda_len; +extern const unsigned char im2col_3d_f32_bda_data[]; + +extern const uint64_t im2col_3d_f32_f16_len; +extern const unsigned char im2col_3d_f32_f16_data[]; + +extern const uint64_t im2col_3d_f32_f16_bda_len; +extern const unsigned char im2col_3d_f32_f16_bda_data[]; + +extern const uint64_t im2col_f32_len; +extern const unsigned char im2col_f32_data[]; + +extern const uint64_t im2col_f32_bda_len; +extern const unsigned char im2col_f32_bda_data[]; + +extern const uint64_t im2col_f32_f16_len; +extern const unsigned char im2col_f32_f16_data[]; + +extern const uint64_t im2col_f32_f16_bda_len; +extern const unsigned char im2col_f32_f16_bda_data[]; + +extern const uint64_t l2_norm_f32_len; +extern const unsigned char l2_norm_f32_data[]; + +extern const uint64_t leaky_relu_f32_len; +extern const unsigned char leaky_relu_f32_data[]; + +extern const uint64_t log_f16_len; +extern const unsigned char log_f16_data[]; + +extern const uint64_t log_f32_len; +extern const unsigned char log_f32_data[]; + +extern const uint64_t matmul_bf16_len; +extern const unsigned char matmul_bf16_data[]; + +extern const uint64_t matmul_bf16_aligned_len; +extern const unsigned char matmul_bf16_aligned_data[]; + +extern const uint64_t matmul_bf16_aligned_cm1_len; +extern const unsigned char matmul_bf16_aligned_cm1_data[]; + +extern const uint64_t matmul_bf16_aligned_cm2_len; +extern const unsigned char matmul_bf16_aligned_cm2_data[]; + +extern const uint64_t matmul_bf16_aligned_f16acc_len; +extern const unsigned char matmul_bf16_aligned_f16acc_data[]; + +extern const uint64_t matmul_bf16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_bf16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_bf16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_bf16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_bf16_aligned_fp32_len; +extern const unsigned char matmul_bf16_aligned_fp32_data[]; + +extern const uint64_t matmul_bf16_cm1_len; +extern const unsigned char matmul_bf16_cm1_data[]; + +extern const uint64_t matmul_bf16_cm2_len; +extern const unsigned char matmul_bf16_cm2_data[]; + +extern const uint64_t matmul_bf16_f16acc_len; +extern const unsigned char matmul_bf16_f16acc_data[]; + +extern const uint64_t matmul_bf16_f16acc_cm1_len; +extern const unsigned char matmul_bf16_f16acc_cm1_data[]; + +extern const uint64_t matmul_bf16_f16acc_cm2_len; +extern const unsigned char matmul_bf16_f16acc_cm2_data[]; + +extern const uint64_t matmul_bf16_fp32_len; +extern const unsigned char matmul_bf16_fp32_data[]; + +extern const uint64_t matmul_f16_len; +extern const unsigned char matmul_f16_data[]; + +extern const uint64_t matmul_f16_aligned_len; +extern const unsigned char matmul_f16_aligned_data[]; + +extern const uint64_t matmul_f16_aligned_cm1_len; +extern const unsigned char matmul_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_f16_aligned_cm2_len; +extern const unsigned char matmul_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_f16_aligned_f16acc_len; +extern const unsigned char matmul_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_f16_aligned_fp32_len; +extern const unsigned char matmul_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_f16_cm1_len; +extern const unsigned char matmul_f16_cm1_data[]; + +extern const uint64_t matmul_f16_cm2_len; +extern const unsigned char matmul_f16_cm2_data[]; + +extern const uint64_t matmul_f16_f16acc_len; +extern const unsigned char matmul_f16_f16acc_data[]; + +extern const uint64_t matmul_f16_f16acc_cm1_len; +extern const unsigned char matmul_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_f16_f16acc_cm2_len; +extern const unsigned char matmul_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_f16_f32_len; +extern const unsigned char matmul_f16_f32_data[]; + +extern const uint64_t matmul_f16_f32_aligned_len; +extern const unsigned char matmul_f16_f32_aligned_data[]; + +extern const uint64_t matmul_f16_f32_aligned_cm1_len; +extern const unsigned char matmul_f16_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_f16_f32_aligned_f16acc_len; +extern const unsigned char matmul_f16_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_f16_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_f16_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_f16_f32_aligned_fp32_len; +extern const unsigned char matmul_f16_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_f16_f32_cm1_len; +extern const unsigned char matmul_f16_f32_cm1_data[]; + +extern const uint64_t matmul_f16_f32_f16acc_len; +extern const unsigned char matmul_f16_f32_f16acc_data[]; + +extern const uint64_t matmul_f16_f32_f16acc_cm1_len; +extern const unsigned char matmul_f16_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_f16_f32_fp32_len; +extern const unsigned char matmul_f16_f32_fp32_data[]; + +extern const uint64_t matmul_f16_fp32_len; +extern const unsigned char matmul_f16_fp32_data[]; + +extern const uint64_t matmul_f32_f16_len; +extern const unsigned char matmul_f32_f16_data[]; + +extern const uint64_t matmul_f32_f16_aligned_len; +extern const unsigned char matmul_f32_f16_aligned_data[]; + +extern const uint64_t matmul_f32_f16_aligned_cm1_len; +extern const unsigned char matmul_f32_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_f32_f16_aligned_cm2_len; +extern const unsigned char matmul_f32_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_f32_f16_aligned_f16acc_len; +extern const unsigned char matmul_f32_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_f32_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_f32_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_f32_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_f32_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_f32_f16_aligned_fp32_len; +extern const unsigned char matmul_f32_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_f32_f16_cm1_len; +extern const unsigned char matmul_f32_f16_cm1_data[]; + +extern const uint64_t matmul_f32_f16_cm2_len; +extern const unsigned char matmul_f32_f16_cm2_data[]; + +extern const uint64_t matmul_f32_f16_f16acc_len; +extern const unsigned char matmul_f32_f16_f16acc_data[]; + +extern const uint64_t matmul_f32_f16_f16acc_cm1_len; +extern const unsigned char matmul_f32_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_f32_f16_f16acc_cm2_len; +extern const unsigned char matmul_f32_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_f32_f16_fp32_len; +extern const unsigned char matmul_f32_f16_fp32_data[]; + +extern const uint64_t matmul_f32_f32_len; +extern const unsigned char matmul_f32_f32_data[]; + +extern const uint64_t matmul_f32_f32_aligned_len; +extern const unsigned char matmul_f32_f32_aligned_data[]; + +extern const uint64_t matmul_f32_f32_aligned_cm1_len; +extern const unsigned char matmul_f32_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_f32_f32_aligned_f16acc_len; +extern const unsigned char matmul_f32_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_f32_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_f32_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_f32_f32_aligned_fp32_len; +extern const unsigned char matmul_f32_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_f32_f32_cm1_len; +extern const unsigned char matmul_f32_f32_cm1_data[]; + +extern const uint64_t matmul_f32_f32_f16acc_len; +extern const unsigned char matmul_f32_f32_f16acc_data[]; + +extern const uint64_t matmul_f32_f32_f16acc_cm1_len; +extern const unsigned char matmul_f32_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_f32_f32_fp32_len; +extern const unsigned char matmul_f32_f32_fp32_data[]; + +extern const uint64_t matmul_id_bf16_len; +extern const unsigned char matmul_id_bf16_data[]; + +extern const uint64_t matmul_id_bf16_aligned_len; +extern const unsigned char matmul_id_bf16_aligned_data[]; + +extern const uint64_t matmul_id_bf16_aligned_f16acc_len; +extern const unsigned char matmul_id_bf16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_bf16_aligned_fp32_len; +extern const unsigned char matmul_id_bf16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_bf16_f16acc_len; +extern const unsigned char matmul_id_bf16_f16acc_data[]; + +extern const uint64_t matmul_id_bf16_fp32_len; +extern const unsigned char matmul_id_bf16_fp32_data[]; + +extern const uint64_t matmul_id_f16_len; +extern const unsigned char matmul_id_f16_data[]; + +extern const uint64_t matmul_id_f16_aligned_len; +extern const unsigned char matmul_id_f16_aligned_data[]; + +extern const uint64_t matmul_id_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_f16_aligned_fp32_len; +extern const unsigned char matmul_id_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_f16_f16acc_len; +extern const unsigned char matmul_id_f16_f16acc_data[]; + +extern const uint64_t matmul_id_f16_f32_len; +extern const unsigned char matmul_id_f16_f32_data[]; + +extern const uint64_t matmul_id_f16_f32_aligned_len; +extern const unsigned char matmul_id_f16_f32_aligned_data[]; + +extern const uint64_t matmul_id_f16_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_f16_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_f16_f32_aligned_fp32_len; +extern const unsigned char matmul_id_f16_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_f16_f32_f16acc_len; +extern const unsigned char matmul_id_f16_f32_f16acc_data[]; + +extern const uint64_t matmul_id_f16_f32_fp32_len; +extern const unsigned char matmul_id_f16_f32_fp32_data[]; + +extern const uint64_t matmul_id_f16_fp32_len; +extern const unsigned char matmul_id_f16_fp32_data[]; + +extern const uint64_t matmul_id_f32_f16_len; +extern const unsigned char matmul_id_f32_f16_data[]; + +extern const uint64_t matmul_id_f32_f16_aligned_len; +extern const unsigned char matmul_id_f32_f16_aligned_data[]; + +extern const uint64_t matmul_id_f32_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_f32_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_f32_f16_aligned_fp32_len; +extern const unsigned char matmul_id_f32_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_f32_f16_f16acc_len; +extern const unsigned char matmul_id_f32_f16_f16acc_data[]; + +extern const uint64_t matmul_id_f32_f16_fp32_len; +extern const unsigned char matmul_id_f32_f16_fp32_data[]; + +extern const uint64_t matmul_id_f32_f32_len; +extern const unsigned char matmul_id_f32_f32_data[]; + +extern const uint64_t matmul_id_f32_f32_aligned_len; +extern const unsigned char matmul_id_f32_f32_aligned_data[]; + +extern const uint64_t matmul_id_f32_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_f32_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_f32_f32_aligned_fp32_len; +extern const unsigned char matmul_id_f32_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_f32_f32_f16acc_len; +extern const unsigned char matmul_id_f32_f32_f16acc_data[]; + +extern const uint64_t matmul_id_f32_f32_fp32_len; +extern const unsigned char matmul_id_f32_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_len; +extern const unsigned char matmul_id_iq1_m_f16_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_aligned_len; +extern const unsigned char matmul_id_iq1_m_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq1_m_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq1_m_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_f16acc_len; +extern const unsigned char matmul_id_iq1_m_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_m_f16_fp32_len; +extern const unsigned char matmul_id_iq1_m_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_len; +extern const unsigned char matmul_id_iq1_m_f32_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_aligned_len; +extern const unsigned char matmul_id_iq1_m_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq1_m_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq1_m_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_f16acc_len; +extern const unsigned char matmul_id_iq1_m_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_m_f32_fp32_len; +extern const unsigned char matmul_id_iq1_m_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_len; +extern const unsigned char matmul_id_iq1_s_f16_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_aligned_len; +extern const unsigned char matmul_id_iq1_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq1_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq1_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_f16acc_len; +extern const unsigned char matmul_id_iq1_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_s_f16_fp32_len; +extern const unsigned char matmul_id_iq1_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_len; +extern const unsigned char matmul_id_iq1_s_f32_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_aligned_len; +extern const unsigned char matmul_id_iq1_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq1_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq1_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_f16acc_len; +extern const unsigned char matmul_id_iq1_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq1_s_f32_fp32_len; +extern const unsigned char matmul_id_iq1_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_len; +extern const unsigned char matmul_id_iq2_s_f16_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_aligned_len; +extern const unsigned char matmul_id_iq2_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_f16acc_len; +extern const unsigned char matmul_id_iq2_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_s_f16_fp32_len; +extern const unsigned char matmul_id_iq2_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_len; +extern const unsigned char matmul_id_iq2_s_f32_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_aligned_len; +extern const unsigned char matmul_id_iq2_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_f16acc_len; +extern const unsigned char matmul_id_iq2_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_s_f32_fp32_len; +extern const unsigned char matmul_id_iq2_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_len; +extern const unsigned char matmul_id_iq2_xs_f16_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_aligned_len; +extern const unsigned char matmul_id_iq2_xs_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_f16acc_len; +extern const unsigned char matmul_id_iq2_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xs_f16_fp32_len; +extern const unsigned char matmul_id_iq2_xs_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_len; +extern const unsigned char matmul_id_iq2_xs_f32_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_aligned_len; +extern const unsigned char matmul_id_iq2_xs_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_f16acc_len; +extern const unsigned char matmul_id_iq2_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xs_f32_fp32_len; +extern const unsigned char matmul_id_iq2_xs_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_len; +extern const unsigned char matmul_id_iq2_xxs_f16_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_aligned_len; +extern const unsigned char matmul_id_iq2_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_f16acc_len; +extern const unsigned char matmul_id_iq2_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f16_fp32_len; +extern const unsigned char matmul_id_iq2_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_len; +extern const unsigned char matmul_id_iq2_xxs_f32_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_aligned_len; +extern const unsigned char matmul_id_iq2_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq2_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq2_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_f16acc_len; +extern const unsigned char matmul_id_iq2_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq2_xxs_f32_fp32_len; +extern const unsigned char matmul_id_iq2_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_len; +extern const unsigned char matmul_id_iq3_s_f16_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_aligned_len; +extern const unsigned char matmul_id_iq3_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq3_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq3_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_f16acc_len; +extern const unsigned char matmul_id_iq3_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_s_f16_fp32_len; +extern const unsigned char matmul_id_iq3_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_len; +extern const unsigned char matmul_id_iq3_s_f32_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_aligned_len; +extern const unsigned char matmul_id_iq3_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq3_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq3_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_f16acc_len; +extern const unsigned char matmul_id_iq3_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_s_f32_fp32_len; +extern const unsigned char matmul_id_iq3_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_len; +extern const unsigned char matmul_id_iq3_xxs_f16_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_aligned_len; +extern const unsigned char matmul_id_iq3_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq3_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq3_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_f16acc_len; +extern const unsigned char matmul_id_iq3_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f16_fp32_len; +extern const unsigned char matmul_id_iq3_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_len; +extern const unsigned char matmul_id_iq3_xxs_f32_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_aligned_len; +extern const unsigned char matmul_id_iq3_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq3_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq3_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_f16acc_len; +extern const unsigned char matmul_id_iq3_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq3_xxs_f32_fp32_len; +extern const unsigned char matmul_id_iq3_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_len; +extern const unsigned char matmul_id_iq4_nl_f16_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_aligned_len; +extern const unsigned char matmul_id_iq4_nl_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq4_nl_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq4_nl_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_f16acc_len; +extern const unsigned char matmul_id_iq4_nl_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_nl_f16_fp32_len; +extern const unsigned char matmul_id_iq4_nl_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_len; +extern const unsigned char matmul_id_iq4_nl_f32_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_aligned_len; +extern const unsigned char matmul_id_iq4_nl_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq4_nl_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq4_nl_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_f16acc_len; +extern const unsigned char matmul_id_iq4_nl_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_nl_f32_fp32_len; +extern const unsigned char matmul_id_iq4_nl_f32_fp32_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_len; +extern const unsigned char matmul_id_iq4_xs_f16_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_aligned_len; +extern const unsigned char matmul_id_iq4_xs_f16_aligned_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_iq4_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_iq4_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_f16acc_len; +extern const unsigned char matmul_id_iq4_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_xs_f16_fp32_len; +extern const unsigned char matmul_id_iq4_xs_f16_fp32_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_len; +extern const unsigned char matmul_id_iq4_xs_f32_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_aligned_len; +extern const unsigned char matmul_id_iq4_xs_f32_aligned_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_iq4_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_iq4_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_f16acc_len; +extern const unsigned char matmul_id_iq4_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_iq4_xs_f32_fp32_len; +extern const unsigned char matmul_id_iq4_xs_f32_fp32_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_len; +extern const unsigned char matmul_id_mxfp4_f16_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_aligned_len; +extern const unsigned char matmul_id_mxfp4_f16_aligned_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_mxfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_id_mxfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_f16acc_len; +extern const unsigned char matmul_id_mxfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_id_mxfp4_f16_fp32_len; +extern const unsigned char matmul_id_mxfp4_f16_fp32_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_len; +extern const unsigned char matmul_id_mxfp4_f32_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_aligned_len; +extern const unsigned char matmul_id_mxfp4_f32_aligned_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_mxfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_id_mxfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_f16acc_len; +extern const unsigned char matmul_id_mxfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_id_mxfp4_f32_fp32_len; +extern const unsigned char matmul_id_mxfp4_f32_fp32_data[]; + +extern const uint64_t matmul_id_mxfp4_q8_1_len; +extern const unsigned char matmul_id_mxfp4_q8_1_data[]; + +extern const uint64_t matmul_id_mxfp4_q8_1_fp32_len; +extern const unsigned char matmul_id_mxfp4_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_len; +extern const unsigned char matmul_id_nvfp4_f16_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_aligned_len; +extern const unsigned char matmul_id_nvfp4_f16_aligned_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_nvfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_id_nvfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_f16acc_len; +extern const unsigned char matmul_id_nvfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_id_nvfp4_f16_fp32_len; +extern const unsigned char matmul_id_nvfp4_f16_fp32_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_len; +extern const unsigned char matmul_id_nvfp4_f32_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_aligned_len; +extern const unsigned char matmul_id_nvfp4_f32_aligned_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_nvfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_id_nvfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_f16acc_len; +extern const unsigned char matmul_id_nvfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_id_nvfp4_f32_fp32_len; +extern const unsigned char matmul_id_nvfp4_f32_fp32_data[]; + +extern const uint64_t matmul_id_q1_0_f16_len; +extern const unsigned char matmul_id_q1_0_f16_data[]; + +extern const uint64_t matmul_id_q1_0_f16_aligned_len; +extern const unsigned char matmul_id_q1_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_q1_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q1_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q1_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q1_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q1_0_f16_f16acc_len; +extern const unsigned char matmul_id_q1_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q1_0_f16_fp32_len; +extern const unsigned char matmul_id_q1_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_q1_0_f32_len; +extern const unsigned char matmul_id_q1_0_f32_data[]; + +extern const uint64_t matmul_id_q1_0_f32_aligned_len; +extern const unsigned char matmul_id_q1_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_q1_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q1_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q1_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q1_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q1_0_f32_f16acc_len; +extern const unsigned char matmul_id_q1_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q1_0_f32_fp32_len; +extern const unsigned char matmul_id_q1_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_q2_k_f16_len; +extern const unsigned char matmul_id_q2_k_f16_data[]; + +extern const uint64_t matmul_id_q2_k_f16_aligned_len; +extern const unsigned char matmul_id_q2_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_q2_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q2_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q2_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q2_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q2_k_f16_f16acc_len; +extern const unsigned char matmul_id_q2_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q2_k_f16_fp32_len; +extern const unsigned char matmul_id_q2_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_q2_k_f32_len; +extern const unsigned char matmul_id_q2_k_f32_data[]; + +extern const uint64_t matmul_id_q2_k_f32_aligned_len; +extern const unsigned char matmul_id_q2_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_q2_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q2_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q2_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q2_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q2_k_f32_f16acc_len; +extern const unsigned char matmul_id_q2_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q2_k_f32_fp32_len; +extern const unsigned char matmul_id_q2_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_q2_k_q8_1_len; +extern const unsigned char matmul_id_q2_k_q8_1_data[]; + +extern const uint64_t matmul_id_q2_k_q8_1_fp32_len; +extern const unsigned char matmul_id_q2_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q3_k_f16_len; +extern const unsigned char matmul_id_q3_k_f16_data[]; + +extern const uint64_t matmul_id_q3_k_f16_aligned_len; +extern const unsigned char matmul_id_q3_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_q3_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q3_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q3_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q3_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q3_k_f16_f16acc_len; +extern const unsigned char matmul_id_q3_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q3_k_f16_fp32_len; +extern const unsigned char matmul_id_q3_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_q3_k_f32_len; +extern const unsigned char matmul_id_q3_k_f32_data[]; + +extern const uint64_t matmul_id_q3_k_f32_aligned_len; +extern const unsigned char matmul_id_q3_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_q3_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q3_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q3_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q3_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q3_k_f32_f16acc_len; +extern const unsigned char matmul_id_q3_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q3_k_f32_fp32_len; +extern const unsigned char matmul_id_q3_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_q3_k_q8_1_len; +extern const unsigned char matmul_id_q3_k_q8_1_data[]; + +extern const uint64_t matmul_id_q3_k_q8_1_fp32_len; +extern const unsigned char matmul_id_q3_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q4_0_f16_len; +extern const unsigned char matmul_id_q4_0_f16_data[]; + +extern const uint64_t matmul_id_q4_0_f16_aligned_len; +extern const unsigned char matmul_id_q4_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_q4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_0_f16_f16acc_len; +extern const unsigned char matmul_id_q4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q4_0_f16_fp32_len; +extern const unsigned char matmul_id_q4_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_q4_0_f32_len; +extern const unsigned char matmul_id_q4_0_f32_data[]; + +extern const uint64_t matmul_id_q4_0_f32_aligned_len; +extern const unsigned char matmul_id_q4_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_q4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_0_f32_f16acc_len; +extern const unsigned char matmul_id_q4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q4_0_f32_fp32_len; +extern const unsigned char matmul_id_q4_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_q4_0_q8_1_len; +extern const unsigned char matmul_id_q4_0_q8_1_data[]; + +extern const uint64_t matmul_id_q4_0_q8_1_fp32_len; +extern const unsigned char matmul_id_q4_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q4_1_f16_len; +extern const unsigned char matmul_id_q4_1_f16_data[]; + +extern const uint64_t matmul_id_q4_1_f16_aligned_len; +extern const unsigned char matmul_id_q4_1_f16_aligned_data[]; + +extern const uint64_t matmul_id_q4_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_1_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q4_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_1_f16_f16acc_len; +extern const unsigned char matmul_id_q4_1_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q4_1_f16_fp32_len; +extern const unsigned char matmul_id_q4_1_f16_fp32_data[]; + +extern const uint64_t matmul_id_q4_1_f32_len; +extern const unsigned char matmul_id_q4_1_f32_data[]; + +extern const uint64_t matmul_id_q4_1_f32_aligned_len; +extern const unsigned char matmul_id_q4_1_f32_aligned_data[]; + +extern const uint64_t matmul_id_q4_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_1_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q4_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_1_f32_f16acc_len; +extern const unsigned char matmul_id_q4_1_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q4_1_f32_fp32_len; +extern const unsigned char matmul_id_q4_1_f32_fp32_data[]; + +extern const uint64_t matmul_id_q4_1_q8_1_len; +extern const unsigned char matmul_id_q4_1_q8_1_data[]; + +extern const uint64_t matmul_id_q4_1_q8_1_fp32_len; +extern const unsigned char matmul_id_q4_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q4_k_f16_len; +extern const unsigned char matmul_id_q4_k_f16_data[]; + +extern const uint64_t matmul_id_q4_k_f16_aligned_len; +extern const unsigned char matmul_id_q4_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_q4_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q4_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_k_f16_f16acc_len; +extern const unsigned char matmul_id_q4_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q4_k_f16_fp32_len; +extern const unsigned char matmul_id_q4_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_q4_k_f32_len; +extern const unsigned char matmul_id_q4_k_f32_data[]; + +extern const uint64_t matmul_id_q4_k_f32_aligned_len; +extern const unsigned char matmul_id_q4_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_q4_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q4_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q4_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q4_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q4_k_f32_f16acc_len; +extern const unsigned char matmul_id_q4_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q4_k_f32_fp32_len; +extern const unsigned char matmul_id_q4_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_q4_k_q8_1_len; +extern const unsigned char matmul_id_q4_k_q8_1_data[]; + +extern const uint64_t matmul_id_q4_k_q8_1_fp32_len; +extern const unsigned char matmul_id_q4_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q5_0_f16_len; +extern const unsigned char matmul_id_q5_0_f16_data[]; + +extern const uint64_t matmul_id_q5_0_f16_aligned_len; +extern const unsigned char matmul_id_q5_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_q5_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q5_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_0_f16_f16acc_len; +extern const unsigned char matmul_id_q5_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q5_0_f16_fp32_len; +extern const unsigned char matmul_id_q5_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_q5_0_f32_len; +extern const unsigned char matmul_id_q5_0_f32_data[]; + +extern const uint64_t matmul_id_q5_0_f32_aligned_len; +extern const unsigned char matmul_id_q5_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_q5_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q5_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_0_f32_f16acc_len; +extern const unsigned char matmul_id_q5_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q5_0_f32_fp32_len; +extern const unsigned char matmul_id_q5_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_q5_0_q8_1_len; +extern const unsigned char matmul_id_q5_0_q8_1_data[]; + +extern const uint64_t matmul_id_q5_0_q8_1_fp32_len; +extern const unsigned char matmul_id_q5_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q5_1_f16_len; +extern const unsigned char matmul_id_q5_1_f16_data[]; + +extern const uint64_t matmul_id_q5_1_f16_aligned_len; +extern const unsigned char matmul_id_q5_1_f16_aligned_data[]; + +extern const uint64_t matmul_id_q5_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_1_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q5_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_1_f16_f16acc_len; +extern const unsigned char matmul_id_q5_1_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q5_1_f16_fp32_len; +extern const unsigned char matmul_id_q5_1_f16_fp32_data[]; + +extern const uint64_t matmul_id_q5_1_f32_len; +extern const unsigned char matmul_id_q5_1_f32_data[]; + +extern const uint64_t matmul_id_q5_1_f32_aligned_len; +extern const unsigned char matmul_id_q5_1_f32_aligned_data[]; + +extern const uint64_t matmul_id_q5_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_1_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q5_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_1_f32_f16acc_len; +extern const unsigned char matmul_id_q5_1_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q5_1_f32_fp32_len; +extern const unsigned char matmul_id_q5_1_f32_fp32_data[]; + +extern const uint64_t matmul_id_q5_1_q8_1_len; +extern const unsigned char matmul_id_q5_1_q8_1_data[]; + +extern const uint64_t matmul_id_q5_1_q8_1_fp32_len; +extern const unsigned char matmul_id_q5_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q5_k_f16_len; +extern const unsigned char matmul_id_q5_k_f16_data[]; + +extern const uint64_t matmul_id_q5_k_f16_aligned_len; +extern const unsigned char matmul_id_q5_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_q5_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q5_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_k_f16_f16acc_len; +extern const unsigned char matmul_id_q5_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q5_k_f16_fp32_len; +extern const unsigned char matmul_id_q5_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_q5_k_f32_len; +extern const unsigned char matmul_id_q5_k_f32_data[]; + +extern const uint64_t matmul_id_q5_k_f32_aligned_len; +extern const unsigned char matmul_id_q5_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_q5_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q5_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q5_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q5_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q5_k_f32_f16acc_len; +extern const unsigned char matmul_id_q5_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q5_k_f32_fp32_len; +extern const unsigned char matmul_id_q5_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_q5_k_q8_1_len; +extern const unsigned char matmul_id_q5_k_q8_1_data[]; + +extern const uint64_t matmul_id_q5_k_q8_1_fp32_len; +extern const unsigned char matmul_id_q5_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q6_k_f16_len; +extern const unsigned char matmul_id_q6_k_f16_data[]; + +extern const uint64_t matmul_id_q6_k_f16_aligned_len; +extern const unsigned char matmul_id_q6_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_q6_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q6_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q6_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q6_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q6_k_f16_f16acc_len; +extern const unsigned char matmul_id_q6_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q6_k_f16_fp32_len; +extern const unsigned char matmul_id_q6_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_q6_k_f32_len; +extern const unsigned char matmul_id_q6_k_f32_data[]; + +extern const uint64_t matmul_id_q6_k_f32_aligned_len; +extern const unsigned char matmul_id_q6_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_q6_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q6_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q6_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q6_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q6_k_f32_f16acc_len; +extern const unsigned char matmul_id_q6_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q6_k_f32_fp32_len; +extern const unsigned char matmul_id_q6_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_q6_k_q8_1_len; +extern const unsigned char matmul_id_q6_k_q8_1_data[]; + +extern const uint64_t matmul_id_q6_k_q8_1_fp32_len; +extern const unsigned char matmul_id_q6_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_q8_0_f16_len; +extern const unsigned char matmul_id_q8_0_f16_data[]; + +extern const uint64_t matmul_id_q8_0_f16_aligned_len; +extern const unsigned char matmul_id_q8_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_q8_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_q8_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q8_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_q8_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q8_0_f16_f16acc_len; +extern const unsigned char matmul_id_q8_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_q8_0_f16_fp32_len; +extern const unsigned char matmul_id_q8_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_q8_0_f32_len; +extern const unsigned char matmul_id_q8_0_f32_data[]; + +extern const uint64_t matmul_id_q8_0_f32_aligned_len; +extern const unsigned char matmul_id_q8_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_q8_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_q8_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_q8_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_q8_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_q8_0_f32_f16acc_len; +extern const unsigned char matmul_id_q8_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_q8_0_f32_fp32_len; +extern const unsigned char matmul_id_q8_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_q8_0_q8_1_len; +extern const unsigned char matmul_id_q8_0_q8_1_data[]; + +extern const uint64_t matmul_id_q8_0_q8_1_fp32_len; +extern const unsigned char matmul_id_q8_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_len; +extern const unsigned char matmul_id_subgroup_bf16_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_bf16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_cm1_len; +extern const unsigned char matmul_id_subgroup_bf16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_cm2_len; +extern const unsigned char matmul_id_subgroup_bf16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_f16acc_len; +extern const unsigned char matmul_id_subgroup_bf16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_bf16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_bf16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_bf16_fp32_len; +extern const unsigned char matmul_id_subgroup_bf16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f16_len; +extern const unsigned char matmul_id_subgroup_f16_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_len; +extern const unsigned char matmul_id_subgroup_f16_f32_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_f16_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_f16_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_f16_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_f16_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f16_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f16_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_f16_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_len; +extern const unsigned char matmul_id_subgroup_f32_f16_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_f32_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_f32_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_f32_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_f32_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_f32_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_len; +extern const unsigned char matmul_id_subgroup_f32_f32_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_f32_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_f32_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_f32_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_f32_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_f32_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_f32_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_f32_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_m_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_m_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq1_s_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq1_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_s_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xs_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xs_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq2_xxs_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq2_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_s_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_s_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq3_xxs_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq3_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_nl_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_nl_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_iq4_xs_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_iq4_xs_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_q8_1_len; +extern const unsigned char matmul_id_subgroup_mxfp4_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_mxfp4_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_mxfp4_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_nvfp4_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_nvfp4_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q1_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q1_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q1_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q2_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q2_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_q8_1_len; +extern const unsigned char matmul_id_subgroup_q2_k_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q2_k_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q2_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q3_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q3_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_q8_1_len; +extern const unsigned char matmul_id_subgroup_q3_k_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q3_k_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q3_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_q8_1_len; +extern const unsigned char matmul_id_subgroup_q4_0_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_0_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_1_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_1_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_q8_1_len; +extern const unsigned char matmul_id_subgroup_q4_1_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_1_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_q8_1_len; +extern const unsigned char matmul_id_subgroup_q4_k_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q4_k_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q4_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_q8_1_len; +extern const unsigned char matmul_id_subgroup_q5_0_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_0_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_1_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_1_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_q8_1_len; +extern const unsigned char matmul_id_subgroup_q5_1_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_1_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_q8_1_len; +extern const unsigned char matmul_id_subgroup_q5_k_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q5_k_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q5_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q6_k_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q6_k_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_q8_1_len; +extern const unsigned char matmul_id_subgroup_q6_k_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q6_k_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q6_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_q8_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_q8_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_q8_1_len; +extern const unsigned char matmul_id_subgroup_q8_0_q8_1_data[]; + +extern const uint64_t matmul_id_subgroup_q8_0_q8_1_fp32_len; +extern const unsigned char matmul_id_subgroup_q8_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_tq3_1s_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_tq3_1s_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo2_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo2_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo3_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo3_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f16_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_aligned_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_aligned_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_f16acc_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_id_subgroup_turbo4_0_f32_fp32_len; +extern const unsigned char matmul_id_subgroup_turbo4_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_len; +extern const unsigned char matmul_id_tq3_1s_f16_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_aligned_len; +extern const unsigned char matmul_id_tq3_1s_f16_aligned_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_tq3_1s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_aligned_fp32_len; +extern const unsigned char matmul_id_tq3_1s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_f16acc_len; +extern const unsigned char matmul_id_tq3_1s_f16_f16acc_data[]; + +extern const uint64_t matmul_id_tq3_1s_f16_fp32_len; +extern const unsigned char matmul_id_tq3_1s_f16_fp32_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_len; +extern const unsigned char matmul_id_tq3_1s_f32_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_aligned_len; +extern const unsigned char matmul_id_tq3_1s_f32_aligned_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_tq3_1s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_aligned_fp32_len; +extern const unsigned char matmul_id_tq3_1s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_f16acc_len; +extern const unsigned char matmul_id_tq3_1s_f32_f16acc_data[]; + +extern const uint64_t matmul_id_tq3_1s_f32_fp32_len; +extern const unsigned char matmul_id_tq3_1s_f32_fp32_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_len; +extern const unsigned char matmul_id_turbo2_0_f16_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_aligned_len; +extern const unsigned char matmul_id_turbo2_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo2_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_turbo2_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_f16acc_len; +extern const unsigned char matmul_id_turbo2_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_turbo2_0_f16_fp32_len; +extern const unsigned char matmul_id_turbo2_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_len; +extern const unsigned char matmul_id_turbo2_0_f32_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_aligned_len; +extern const unsigned char matmul_id_turbo2_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo2_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_turbo2_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_f16acc_len; +extern const unsigned char matmul_id_turbo2_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_turbo2_0_f32_fp32_len; +extern const unsigned char matmul_id_turbo2_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_len; +extern const unsigned char matmul_id_turbo3_0_f16_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_aligned_len; +extern const unsigned char matmul_id_turbo3_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo3_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_turbo3_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_f16acc_len; +extern const unsigned char matmul_id_turbo3_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_turbo3_0_f16_fp32_len; +extern const unsigned char matmul_id_turbo3_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_len; +extern const unsigned char matmul_id_turbo3_0_f32_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_aligned_len; +extern const unsigned char matmul_id_turbo3_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo3_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_turbo3_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_f16acc_len; +extern const unsigned char matmul_id_turbo3_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_turbo3_0_f32_fp32_len; +extern const unsigned char matmul_id_turbo3_0_f32_fp32_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_len; +extern const unsigned char matmul_id_turbo4_0_f16_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_aligned_len; +extern const unsigned char matmul_id_turbo4_0_f16_aligned_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_id_turbo4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_f16acc_len; +extern const unsigned char matmul_id_turbo4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_id_turbo4_0_f16_fp32_len; +extern const unsigned char matmul_id_turbo4_0_f16_fp32_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_len; +extern const unsigned char matmul_id_turbo4_0_f32_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_aligned_len; +extern const unsigned char matmul_id_turbo4_0_f32_aligned_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_id_turbo4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_id_turbo4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_f16acc_len; +extern const unsigned char matmul_id_turbo4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_id_turbo4_0_f32_fp32_len; +extern const unsigned char matmul_id_turbo4_0_f32_fp32_data[]; + +extern const uint64_t matmul_iq1_m_f16_len; +extern const unsigned char matmul_iq1_m_f16_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_len; +extern const unsigned char matmul_iq1_m_f16_aligned_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_cm1_len; +extern const unsigned char matmul_iq1_m_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_cm2_len; +extern const unsigned char matmul_iq1_m_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq1_m_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq1_m_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq1_m_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq1_m_f16_aligned_fp32_len; +extern const unsigned char matmul_iq1_m_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq1_m_f16_cm1_len; +extern const unsigned char matmul_iq1_m_f16_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f16_cm2_len; +extern const unsigned char matmul_iq1_m_f16_cm2_data[]; + +extern const uint64_t matmul_iq1_m_f16_f16acc_len; +extern const unsigned char matmul_iq1_m_f16_f16acc_data[]; + +extern const uint64_t matmul_iq1_m_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq1_m_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq1_m_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq1_m_f16_fp32_len; +extern const unsigned char matmul_iq1_m_f16_fp32_data[]; + +extern const uint64_t matmul_iq1_m_f32_len; +extern const unsigned char matmul_iq1_m_f32_data[]; + +extern const uint64_t matmul_iq1_m_f32_aligned_len; +extern const unsigned char matmul_iq1_m_f32_aligned_data[]; + +extern const uint64_t matmul_iq1_m_f32_aligned_cm1_len; +extern const unsigned char matmul_iq1_m_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq1_m_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq1_m_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq1_m_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f32_aligned_fp32_len; +extern const unsigned char matmul_iq1_m_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq1_m_f32_cm1_len; +extern const unsigned char matmul_iq1_m_f32_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f32_f16acc_len; +extern const unsigned char matmul_iq1_m_f32_f16acc_data[]; + +extern const uint64_t matmul_iq1_m_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq1_m_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_m_f32_fp32_len; +extern const unsigned char matmul_iq1_m_f32_fp32_data[]; + +extern const uint64_t matmul_iq1_s_f16_len; +extern const unsigned char matmul_iq1_s_f16_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_len; +extern const unsigned char matmul_iq1_s_f16_aligned_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_cm1_len; +extern const unsigned char matmul_iq1_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_cm2_len; +extern const unsigned char matmul_iq1_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq1_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq1_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq1_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq1_s_f16_aligned_fp32_len; +extern const unsigned char matmul_iq1_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq1_s_f16_cm1_len; +extern const unsigned char matmul_iq1_s_f16_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f16_cm2_len; +extern const unsigned char matmul_iq1_s_f16_cm2_data[]; + +extern const uint64_t matmul_iq1_s_f16_f16acc_len; +extern const unsigned char matmul_iq1_s_f16_f16acc_data[]; + +extern const uint64_t matmul_iq1_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq1_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq1_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq1_s_f16_fp32_len; +extern const unsigned char matmul_iq1_s_f16_fp32_data[]; + +extern const uint64_t matmul_iq1_s_f32_len; +extern const unsigned char matmul_iq1_s_f32_data[]; + +extern const uint64_t matmul_iq1_s_f32_aligned_len; +extern const unsigned char matmul_iq1_s_f32_aligned_data[]; + +extern const uint64_t matmul_iq1_s_f32_aligned_cm1_len; +extern const unsigned char matmul_iq1_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq1_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq1_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq1_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f32_aligned_fp32_len; +extern const unsigned char matmul_iq1_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq1_s_f32_cm1_len; +extern const unsigned char matmul_iq1_s_f32_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f32_f16acc_len; +extern const unsigned char matmul_iq1_s_f32_f16acc_data[]; + +extern const uint64_t matmul_iq1_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq1_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq1_s_f32_fp32_len; +extern const unsigned char matmul_iq1_s_f32_fp32_data[]; + +extern const uint64_t matmul_iq2_s_f16_len; +extern const unsigned char matmul_iq2_s_f16_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_len; +extern const unsigned char matmul_iq2_s_f16_aligned_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_cm1_len; +extern const unsigned char matmul_iq2_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_cm2_len; +extern const unsigned char matmul_iq2_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq2_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq2_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_s_f16_aligned_fp32_len; +extern const unsigned char matmul_iq2_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_s_f16_cm1_len; +extern const unsigned char matmul_iq2_s_f16_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f16_cm2_len; +extern const unsigned char matmul_iq2_s_f16_cm2_data[]; + +extern const uint64_t matmul_iq2_s_f16_f16acc_len; +extern const unsigned char matmul_iq2_s_f16_f16acc_data[]; + +extern const uint64_t matmul_iq2_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq2_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq2_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_s_f16_fp32_len; +extern const unsigned char matmul_iq2_s_f16_fp32_data[]; + +extern const uint64_t matmul_iq2_s_f32_len; +extern const unsigned char matmul_iq2_s_f32_data[]; + +extern const uint64_t matmul_iq2_s_f32_aligned_len; +extern const unsigned char matmul_iq2_s_f32_aligned_data[]; + +extern const uint64_t matmul_iq2_s_f32_aligned_cm1_len; +extern const unsigned char matmul_iq2_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq2_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f32_aligned_fp32_len; +extern const unsigned char matmul_iq2_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_s_f32_cm1_len; +extern const unsigned char matmul_iq2_s_f32_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f32_f16acc_len; +extern const unsigned char matmul_iq2_s_f32_f16acc_data[]; + +extern const uint64_t matmul_iq2_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq2_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_s_f32_fp32_len; +extern const unsigned char matmul_iq2_s_f32_fp32_data[]; + +extern const uint64_t matmul_iq2_xs_f16_len; +extern const unsigned char matmul_iq2_xs_f16_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_cm1_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_cm2_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_iq2_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_xs_f16_cm1_len; +extern const unsigned char matmul_iq2_xs_f16_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f16_cm2_len; +extern const unsigned char matmul_iq2_xs_f16_cm2_data[]; + +extern const uint64_t matmul_iq2_xs_f16_f16acc_len; +extern const unsigned char matmul_iq2_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_iq2_xs_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq2_xs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_xs_f16_fp32_len; +extern const unsigned char matmul_iq2_xs_f16_fp32_data[]; + +extern const uint64_t matmul_iq2_xs_f32_len; +extern const unsigned char matmul_iq2_xs_f32_data[]; + +extern const uint64_t matmul_iq2_xs_f32_aligned_len; +extern const unsigned char matmul_iq2_xs_f32_aligned_data[]; + +extern const uint64_t matmul_iq2_xs_f32_aligned_cm1_len; +extern const unsigned char matmul_iq2_xs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq2_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_xs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_iq2_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_xs_f32_cm1_len; +extern const unsigned char matmul_iq2_xs_f32_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f32_f16acc_len; +extern const unsigned char matmul_iq2_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_iq2_xs_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xs_f32_fp32_len; +extern const unsigned char matmul_iq2_xs_f32_fp32_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_len; +extern const unsigned char matmul_iq2_xxs_f16_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_cm1_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_cm2_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_iq2_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_cm1_len; +extern const unsigned char matmul_iq2_xxs_f16_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_cm2_len; +extern const unsigned char matmul_iq2_xxs_f16_cm2_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_f16acc_len; +extern const unsigned char matmul_iq2_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xxs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq2_xxs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq2_xxs_f16_fp32_len; +extern const unsigned char matmul_iq2_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_len; +extern const unsigned char matmul_iq2_xxs_f32_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_aligned_len; +extern const unsigned char matmul_iq2_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_aligned_cm1_len; +extern const unsigned char matmul_iq2_xxs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq2_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xxs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_iq2_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_cm1_len; +extern const unsigned char matmul_iq2_xxs_f32_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_f16acc_len; +extern const unsigned char matmul_iq2_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq2_xxs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq2_xxs_f32_fp32_len; +extern const unsigned char matmul_iq2_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_iq3_s_f16_len; +extern const unsigned char matmul_iq3_s_f16_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_len; +extern const unsigned char matmul_iq3_s_f16_aligned_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_cm1_len; +extern const unsigned char matmul_iq3_s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_cm2_len; +extern const unsigned char matmul_iq3_s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq3_s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq3_s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq3_s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq3_s_f16_aligned_fp32_len; +extern const unsigned char matmul_iq3_s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq3_s_f16_cm1_len; +extern const unsigned char matmul_iq3_s_f16_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f16_cm2_len; +extern const unsigned char matmul_iq3_s_f16_cm2_data[]; + +extern const uint64_t matmul_iq3_s_f16_f16acc_len; +extern const unsigned char matmul_iq3_s_f16_f16acc_data[]; + +extern const uint64_t matmul_iq3_s_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq3_s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq3_s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq3_s_f16_fp32_len; +extern const unsigned char matmul_iq3_s_f16_fp32_data[]; + +extern const uint64_t matmul_iq3_s_f32_len; +extern const unsigned char matmul_iq3_s_f32_data[]; + +extern const uint64_t matmul_iq3_s_f32_aligned_len; +extern const unsigned char matmul_iq3_s_f32_aligned_data[]; + +extern const uint64_t matmul_iq3_s_f32_aligned_cm1_len; +extern const unsigned char matmul_iq3_s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq3_s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq3_s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq3_s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f32_aligned_fp32_len; +extern const unsigned char matmul_iq3_s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq3_s_f32_cm1_len; +extern const unsigned char matmul_iq3_s_f32_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f32_f16acc_len; +extern const unsigned char matmul_iq3_s_f32_f16acc_data[]; + +extern const uint64_t matmul_iq3_s_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq3_s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_s_f32_fp32_len; +extern const unsigned char matmul_iq3_s_f32_fp32_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_len; +extern const unsigned char matmul_iq3_xxs_f16_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_cm1_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_cm2_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_aligned_fp32_len; +extern const unsigned char matmul_iq3_xxs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_cm1_len; +extern const unsigned char matmul_iq3_xxs_f16_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_cm2_len; +extern const unsigned char matmul_iq3_xxs_f16_cm2_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_f16acc_len; +extern const unsigned char matmul_iq3_xxs_f16_f16acc_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq3_xxs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq3_xxs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq3_xxs_f16_fp32_len; +extern const unsigned char matmul_iq3_xxs_f16_fp32_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_len; +extern const unsigned char matmul_iq3_xxs_f32_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_aligned_len; +extern const unsigned char matmul_iq3_xxs_f32_aligned_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_aligned_cm1_len; +extern const unsigned char matmul_iq3_xxs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq3_xxs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq3_xxs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_aligned_fp32_len; +extern const unsigned char matmul_iq3_xxs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_cm1_len; +extern const unsigned char matmul_iq3_xxs_f32_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_f16acc_len; +extern const unsigned char matmul_iq3_xxs_f32_f16acc_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq3_xxs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq3_xxs_f32_fp32_len; +extern const unsigned char matmul_iq3_xxs_f32_fp32_data[]; + +extern const uint64_t matmul_iq4_nl_f16_len; +extern const unsigned char matmul_iq4_nl_f16_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_cm1_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_cm2_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq4_nl_f16_aligned_fp32_len; +extern const unsigned char matmul_iq4_nl_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq4_nl_f16_cm1_len; +extern const unsigned char matmul_iq4_nl_f16_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f16_cm2_len; +extern const unsigned char matmul_iq4_nl_f16_cm2_data[]; + +extern const uint64_t matmul_iq4_nl_f16_f16acc_len; +extern const unsigned char matmul_iq4_nl_f16_f16acc_data[]; + +extern const uint64_t matmul_iq4_nl_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq4_nl_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq4_nl_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq4_nl_f16_fp32_len; +extern const unsigned char matmul_iq4_nl_f16_fp32_data[]; + +extern const uint64_t matmul_iq4_nl_f32_len; +extern const unsigned char matmul_iq4_nl_f32_data[]; + +extern const uint64_t matmul_iq4_nl_f32_aligned_len; +extern const unsigned char matmul_iq4_nl_f32_aligned_data[]; + +extern const uint64_t matmul_iq4_nl_f32_aligned_cm1_len; +extern const unsigned char matmul_iq4_nl_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq4_nl_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq4_nl_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq4_nl_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f32_aligned_fp32_len; +extern const unsigned char matmul_iq4_nl_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq4_nl_f32_cm1_len; +extern const unsigned char matmul_iq4_nl_f32_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f32_f16acc_len; +extern const unsigned char matmul_iq4_nl_f32_f16acc_data[]; + +extern const uint64_t matmul_iq4_nl_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq4_nl_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_nl_f32_fp32_len; +extern const unsigned char matmul_iq4_nl_f32_fp32_data[]; + +extern const uint64_t matmul_iq4_xs_f16_len; +extern const unsigned char matmul_iq4_xs_f16_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_cm1_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_cm2_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_f16acc_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq4_xs_f16_aligned_fp32_len; +extern const unsigned char matmul_iq4_xs_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_iq4_xs_f16_cm1_len; +extern const unsigned char matmul_iq4_xs_f16_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f16_cm2_len; +extern const unsigned char matmul_iq4_xs_f16_cm2_data[]; + +extern const uint64_t matmul_iq4_xs_f16_f16acc_len; +extern const unsigned char matmul_iq4_xs_f16_f16acc_data[]; + +extern const uint64_t matmul_iq4_xs_f16_f16acc_cm1_len; +extern const unsigned char matmul_iq4_xs_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f16_f16acc_cm2_len; +extern const unsigned char matmul_iq4_xs_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_iq4_xs_f16_fp32_len; +extern const unsigned char matmul_iq4_xs_f16_fp32_data[]; + +extern const uint64_t matmul_iq4_xs_f32_len; +extern const unsigned char matmul_iq4_xs_f32_data[]; + +extern const uint64_t matmul_iq4_xs_f32_aligned_len; +extern const unsigned char matmul_iq4_xs_f32_aligned_data[]; + +extern const uint64_t matmul_iq4_xs_f32_aligned_cm1_len; +extern const unsigned char matmul_iq4_xs_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f32_aligned_f16acc_len; +extern const unsigned char matmul_iq4_xs_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_iq4_xs_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_iq4_xs_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f32_aligned_fp32_len; +extern const unsigned char matmul_iq4_xs_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_iq4_xs_f32_cm1_len; +extern const unsigned char matmul_iq4_xs_f32_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f32_f16acc_len; +extern const unsigned char matmul_iq4_xs_f32_f16acc_data[]; + +extern const uint64_t matmul_iq4_xs_f32_f16acc_cm1_len; +extern const unsigned char matmul_iq4_xs_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_iq4_xs_f32_fp32_len; +extern const unsigned char matmul_iq4_xs_f32_fp32_data[]; + +extern const uint64_t matmul_mxfp4_f16_len; +extern const unsigned char matmul_mxfp4_f16_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_len; +extern const unsigned char matmul_mxfp4_f16_aligned_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_cm1_len; +extern const unsigned char matmul_mxfp4_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_cm2_len; +extern const unsigned char matmul_mxfp4_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_mxfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_mxfp4_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_mxfp4_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_mxfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_mxfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_mxfp4_f16_cm1_len; +extern const unsigned char matmul_mxfp4_f16_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f16_cm2_len; +extern const unsigned char matmul_mxfp4_f16_cm2_data[]; + +extern const uint64_t matmul_mxfp4_f16_f16acc_len; +extern const unsigned char matmul_mxfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_mxfp4_f16_f16acc_cm1_len; +extern const unsigned char matmul_mxfp4_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f16_f16acc_cm2_len; +extern const unsigned char matmul_mxfp4_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_mxfp4_f16_fp32_len; +extern const unsigned char matmul_mxfp4_f16_fp32_data[]; + +extern const uint64_t matmul_mxfp4_f32_len; +extern const unsigned char matmul_mxfp4_f32_data[]; + +extern const uint64_t matmul_mxfp4_f32_aligned_len; +extern const unsigned char matmul_mxfp4_f32_aligned_data[]; + +extern const uint64_t matmul_mxfp4_f32_aligned_cm1_len; +extern const unsigned char matmul_mxfp4_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_mxfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_mxfp4_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_mxfp4_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_mxfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_mxfp4_f32_cm1_len; +extern const unsigned char matmul_mxfp4_f32_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f32_f16acc_len; +extern const unsigned char matmul_mxfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_mxfp4_f32_f16acc_cm1_len; +extern const unsigned char matmul_mxfp4_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_mxfp4_f32_fp32_len; +extern const unsigned char matmul_mxfp4_f32_fp32_data[]; + +extern const uint64_t matmul_mxfp4_q8_1_len; +extern const unsigned char matmul_mxfp4_q8_1_data[]; + +extern const uint64_t matmul_mxfp4_q8_1_fp32_len; +extern const unsigned char matmul_mxfp4_q8_1_fp32_data[]; + +extern const uint64_t matmul_nvfp4_f16_len; +extern const unsigned char matmul_nvfp4_f16_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_len; +extern const unsigned char matmul_nvfp4_f16_aligned_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_cm1_len; +extern const unsigned char matmul_nvfp4_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_cm2_len; +extern const unsigned char matmul_nvfp4_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_f16acc_len; +extern const unsigned char matmul_nvfp4_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_nvfp4_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_nvfp4_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_nvfp4_f16_aligned_fp32_len; +extern const unsigned char matmul_nvfp4_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_nvfp4_f16_cm1_len; +extern const unsigned char matmul_nvfp4_f16_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f16_cm2_len; +extern const unsigned char matmul_nvfp4_f16_cm2_data[]; + +extern const uint64_t matmul_nvfp4_f16_f16acc_len; +extern const unsigned char matmul_nvfp4_f16_f16acc_data[]; + +extern const uint64_t matmul_nvfp4_f16_f16acc_cm1_len; +extern const unsigned char matmul_nvfp4_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f16_f16acc_cm2_len; +extern const unsigned char matmul_nvfp4_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_nvfp4_f16_fp32_len; +extern const unsigned char matmul_nvfp4_f16_fp32_data[]; + +extern const uint64_t matmul_nvfp4_f32_len; +extern const unsigned char matmul_nvfp4_f32_data[]; + +extern const uint64_t matmul_nvfp4_f32_aligned_len; +extern const unsigned char matmul_nvfp4_f32_aligned_data[]; + +extern const uint64_t matmul_nvfp4_f32_aligned_cm1_len; +extern const unsigned char matmul_nvfp4_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f32_aligned_f16acc_len; +extern const unsigned char matmul_nvfp4_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_nvfp4_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_nvfp4_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f32_aligned_fp32_len; +extern const unsigned char matmul_nvfp4_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_nvfp4_f32_cm1_len; +extern const unsigned char matmul_nvfp4_f32_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f32_f16acc_len; +extern const unsigned char matmul_nvfp4_f32_f16acc_data[]; + +extern const uint64_t matmul_nvfp4_f32_f16acc_cm1_len; +extern const unsigned char matmul_nvfp4_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_nvfp4_f32_fp32_len; +extern const unsigned char matmul_nvfp4_f32_fp32_data[]; + +extern const uint64_t matmul_q1_0_f16_len; +extern const unsigned char matmul_q1_0_f16_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_len; +extern const unsigned char matmul_q1_0_f16_aligned_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_cm1_len; +extern const unsigned char matmul_q1_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_cm2_len; +extern const unsigned char matmul_q1_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_q1_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q1_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q1_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q1_0_f16_aligned_fp32_len; +extern const unsigned char matmul_q1_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q1_0_f16_cm1_len; +extern const unsigned char matmul_q1_0_f16_cm1_data[]; + +extern const uint64_t matmul_q1_0_f16_cm2_len; +extern const unsigned char matmul_q1_0_f16_cm2_data[]; + +extern const uint64_t matmul_q1_0_f16_f16acc_len; +extern const unsigned char matmul_q1_0_f16_f16acc_data[]; + +extern const uint64_t matmul_q1_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_q1_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q1_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_q1_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q1_0_f16_fp32_len; +extern const unsigned char matmul_q1_0_f16_fp32_data[]; + +extern const uint64_t matmul_q1_0_f32_len; +extern const unsigned char matmul_q1_0_f32_data[]; + +extern const uint64_t matmul_q1_0_f32_aligned_len; +extern const unsigned char matmul_q1_0_f32_aligned_data[]; + +extern const uint64_t matmul_q1_0_f32_aligned_cm1_len; +extern const unsigned char matmul_q1_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q1_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_q1_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q1_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q1_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q1_0_f32_aligned_fp32_len; +extern const unsigned char matmul_q1_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q1_0_f32_cm1_len; +extern const unsigned char matmul_q1_0_f32_cm1_data[]; + +extern const uint64_t matmul_q1_0_f32_f16acc_len; +extern const unsigned char matmul_q1_0_f32_f16acc_data[]; + +extern const uint64_t matmul_q1_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_q1_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q1_0_f32_fp32_len; +extern const unsigned char matmul_q1_0_f32_fp32_data[]; + +extern const uint64_t matmul_q2_k_f16_len; +extern const unsigned char matmul_q2_k_f16_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_len; +extern const unsigned char matmul_q2_k_f16_aligned_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_cm1_len; +extern const unsigned char matmul_q2_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_cm2_len; +extern const unsigned char matmul_q2_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_q2_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q2_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q2_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q2_k_f16_aligned_fp32_len; +extern const unsigned char matmul_q2_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q2_k_f16_cm1_len; +extern const unsigned char matmul_q2_k_f16_cm1_data[]; + +extern const uint64_t matmul_q2_k_f16_cm2_len; +extern const unsigned char matmul_q2_k_f16_cm2_data[]; + +extern const uint64_t matmul_q2_k_f16_f16acc_len; +extern const unsigned char matmul_q2_k_f16_f16acc_data[]; + +extern const uint64_t matmul_q2_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_q2_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q2_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_q2_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q2_k_f16_fp32_len; +extern const unsigned char matmul_q2_k_f16_fp32_data[]; + +extern const uint64_t matmul_q2_k_f32_len; +extern const unsigned char matmul_q2_k_f32_data[]; + +extern const uint64_t matmul_q2_k_f32_aligned_len; +extern const unsigned char matmul_q2_k_f32_aligned_data[]; + +extern const uint64_t matmul_q2_k_f32_aligned_cm1_len; +extern const unsigned char matmul_q2_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q2_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_q2_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q2_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q2_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q2_k_f32_aligned_fp32_len; +extern const unsigned char matmul_q2_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q2_k_f32_cm1_len; +extern const unsigned char matmul_q2_k_f32_cm1_data[]; + +extern const uint64_t matmul_q2_k_f32_f16acc_len; +extern const unsigned char matmul_q2_k_f32_f16acc_data[]; + +extern const uint64_t matmul_q2_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_q2_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q2_k_f32_fp32_len; +extern const unsigned char matmul_q2_k_f32_fp32_data[]; + +extern const uint64_t matmul_q2_k_q8_1_len; +extern const unsigned char matmul_q2_k_q8_1_data[]; + +extern const uint64_t matmul_q2_k_q8_1_fp32_len; +extern const unsigned char matmul_q2_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_q3_k_f16_len; +extern const unsigned char matmul_q3_k_f16_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_len; +extern const unsigned char matmul_q3_k_f16_aligned_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_cm1_len; +extern const unsigned char matmul_q3_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_cm2_len; +extern const unsigned char matmul_q3_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_q3_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q3_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q3_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q3_k_f16_aligned_fp32_len; +extern const unsigned char matmul_q3_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q3_k_f16_cm1_len; +extern const unsigned char matmul_q3_k_f16_cm1_data[]; + +extern const uint64_t matmul_q3_k_f16_cm2_len; +extern const unsigned char matmul_q3_k_f16_cm2_data[]; + +extern const uint64_t matmul_q3_k_f16_f16acc_len; +extern const unsigned char matmul_q3_k_f16_f16acc_data[]; + +extern const uint64_t matmul_q3_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_q3_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q3_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_q3_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q3_k_f16_fp32_len; +extern const unsigned char matmul_q3_k_f16_fp32_data[]; + +extern const uint64_t matmul_q3_k_f32_len; +extern const unsigned char matmul_q3_k_f32_data[]; + +extern const uint64_t matmul_q3_k_f32_aligned_len; +extern const unsigned char matmul_q3_k_f32_aligned_data[]; + +extern const uint64_t matmul_q3_k_f32_aligned_cm1_len; +extern const unsigned char matmul_q3_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q3_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_q3_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q3_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q3_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q3_k_f32_aligned_fp32_len; +extern const unsigned char matmul_q3_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q3_k_f32_cm1_len; +extern const unsigned char matmul_q3_k_f32_cm1_data[]; + +extern const uint64_t matmul_q3_k_f32_f16acc_len; +extern const unsigned char matmul_q3_k_f32_f16acc_data[]; + +extern const uint64_t matmul_q3_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_q3_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q3_k_f32_fp32_len; +extern const unsigned char matmul_q3_k_f32_fp32_data[]; + +extern const uint64_t matmul_q3_k_q8_1_len; +extern const unsigned char matmul_q3_k_q8_1_data[]; + +extern const uint64_t matmul_q3_k_q8_1_fp32_len; +extern const unsigned char matmul_q3_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_q4_0_f16_len; +extern const unsigned char matmul_q4_0_f16_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_len; +extern const unsigned char matmul_q4_0_f16_aligned_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_cm1_len; +extern const unsigned char matmul_q4_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_cm2_len; +extern const unsigned char matmul_q4_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_q4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q4_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_q4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_0_f16_cm1_len; +extern const unsigned char matmul_q4_0_f16_cm1_data[]; + +extern const uint64_t matmul_q4_0_f16_cm2_len; +extern const unsigned char matmul_q4_0_f16_cm2_data[]; + +extern const uint64_t matmul_q4_0_f16_f16acc_len; +extern const unsigned char matmul_q4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_q4_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_q4_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_q4_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_0_f16_fp32_len; +extern const unsigned char matmul_q4_0_f16_fp32_data[]; + +extern const uint64_t matmul_q4_0_f32_len; +extern const unsigned char matmul_q4_0_f32_data[]; + +extern const uint64_t matmul_q4_0_f32_aligned_len; +extern const unsigned char matmul_q4_0_f32_aligned_data[]; + +extern const uint64_t matmul_q4_0_f32_aligned_cm1_len; +extern const unsigned char matmul_q4_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_q4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_q4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_0_f32_cm1_len; +extern const unsigned char matmul_q4_0_f32_cm1_data[]; + +extern const uint64_t matmul_q4_0_f32_f16acc_len; +extern const unsigned char matmul_q4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_q4_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_q4_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_0_f32_fp32_len; +extern const unsigned char matmul_q4_0_f32_fp32_data[]; + +extern const uint64_t matmul_q4_0_q8_1_len; +extern const unsigned char matmul_q4_0_q8_1_data[]; + +extern const uint64_t matmul_q4_0_q8_1_fp32_len; +extern const unsigned char matmul_q4_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_q4_1_f16_len; +extern const unsigned char matmul_q4_1_f16_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_len; +extern const unsigned char matmul_q4_1_f16_aligned_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_cm1_len; +extern const unsigned char matmul_q4_1_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_cm2_len; +extern const unsigned char matmul_q4_1_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_q4_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_1_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q4_1_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_1_f16_aligned_fp32_len; +extern const unsigned char matmul_q4_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_1_f16_cm1_len; +extern const unsigned char matmul_q4_1_f16_cm1_data[]; + +extern const uint64_t matmul_q4_1_f16_cm2_len; +extern const unsigned char matmul_q4_1_f16_cm2_data[]; + +extern const uint64_t matmul_q4_1_f16_f16acc_len; +extern const unsigned char matmul_q4_1_f16_f16acc_data[]; + +extern const uint64_t matmul_q4_1_f16_f16acc_cm1_len; +extern const unsigned char matmul_q4_1_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_1_f16_f16acc_cm2_len; +extern const unsigned char matmul_q4_1_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_1_f16_fp32_len; +extern const unsigned char matmul_q4_1_f16_fp32_data[]; + +extern const uint64_t matmul_q4_1_f32_len; +extern const unsigned char matmul_q4_1_f32_data[]; + +extern const uint64_t matmul_q4_1_f32_aligned_len; +extern const unsigned char matmul_q4_1_f32_aligned_data[]; + +extern const uint64_t matmul_q4_1_f32_aligned_cm1_len; +extern const unsigned char matmul_q4_1_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_q4_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_1_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_1_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_1_f32_aligned_fp32_len; +extern const unsigned char matmul_q4_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_1_f32_cm1_len; +extern const unsigned char matmul_q4_1_f32_cm1_data[]; + +extern const uint64_t matmul_q4_1_f32_f16acc_len; +extern const unsigned char matmul_q4_1_f32_f16acc_data[]; + +extern const uint64_t matmul_q4_1_f32_f16acc_cm1_len; +extern const unsigned char matmul_q4_1_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_1_f32_fp32_len; +extern const unsigned char matmul_q4_1_f32_fp32_data[]; + +extern const uint64_t matmul_q4_1_q8_1_len; +extern const unsigned char matmul_q4_1_q8_1_data[]; + +extern const uint64_t matmul_q4_1_q8_1_fp32_len; +extern const unsigned char matmul_q4_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_q4_k_f16_len; +extern const unsigned char matmul_q4_k_f16_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_len; +extern const unsigned char matmul_q4_k_f16_aligned_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_cm1_len; +extern const unsigned char matmul_q4_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_cm2_len; +extern const unsigned char matmul_q4_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_q4_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q4_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_k_f16_aligned_fp32_len; +extern const unsigned char matmul_q4_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_k_f16_cm1_len; +extern const unsigned char matmul_q4_k_f16_cm1_data[]; + +extern const uint64_t matmul_q4_k_f16_cm2_len; +extern const unsigned char matmul_q4_k_f16_cm2_data[]; + +extern const uint64_t matmul_q4_k_f16_f16acc_len; +extern const unsigned char matmul_q4_k_f16_f16acc_data[]; + +extern const uint64_t matmul_q4_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_q4_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_q4_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q4_k_f16_fp32_len; +extern const unsigned char matmul_q4_k_f16_fp32_data[]; + +extern const uint64_t matmul_q4_k_f32_len; +extern const unsigned char matmul_q4_k_f32_data[]; + +extern const uint64_t matmul_q4_k_f32_aligned_len; +extern const unsigned char matmul_q4_k_f32_aligned_data[]; + +extern const uint64_t matmul_q4_k_f32_aligned_cm1_len; +extern const unsigned char matmul_q4_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q4_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_q4_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q4_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q4_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_k_f32_aligned_fp32_len; +extern const unsigned char matmul_q4_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q4_k_f32_cm1_len; +extern const unsigned char matmul_q4_k_f32_cm1_data[]; + +extern const uint64_t matmul_q4_k_f32_f16acc_len; +extern const unsigned char matmul_q4_k_f32_f16acc_data[]; + +extern const uint64_t matmul_q4_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_q4_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q4_k_f32_fp32_len; +extern const unsigned char matmul_q4_k_f32_fp32_data[]; + +extern const uint64_t matmul_q4_k_q8_1_len; +extern const unsigned char matmul_q4_k_q8_1_data[]; + +extern const uint64_t matmul_q4_k_q8_1_fp32_len; +extern const unsigned char matmul_q4_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_q5_0_f16_len; +extern const unsigned char matmul_q5_0_f16_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_len; +extern const unsigned char matmul_q5_0_f16_aligned_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_cm1_len; +extern const unsigned char matmul_q5_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_cm2_len; +extern const unsigned char matmul_q5_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_q5_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q5_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_0_f16_aligned_fp32_len; +extern const unsigned char matmul_q5_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_0_f16_cm1_len; +extern const unsigned char matmul_q5_0_f16_cm1_data[]; + +extern const uint64_t matmul_q5_0_f16_cm2_len; +extern const unsigned char matmul_q5_0_f16_cm2_data[]; + +extern const uint64_t matmul_q5_0_f16_f16acc_len; +extern const unsigned char matmul_q5_0_f16_f16acc_data[]; + +extern const uint64_t matmul_q5_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_q5_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_q5_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_0_f16_fp32_len; +extern const unsigned char matmul_q5_0_f16_fp32_data[]; + +extern const uint64_t matmul_q5_0_f32_len; +extern const unsigned char matmul_q5_0_f32_data[]; + +extern const uint64_t matmul_q5_0_f32_aligned_len; +extern const unsigned char matmul_q5_0_f32_aligned_data[]; + +extern const uint64_t matmul_q5_0_f32_aligned_cm1_len; +extern const unsigned char matmul_q5_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_q5_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_0_f32_aligned_fp32_len; +extern const unsigned char matmul_q5_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_0_f32_cm1_len; +extern const unsigned char matmul_q5_0_f32_cm1_data[]; + +extern const uint64_t matmul_q5_0_f32_f16acc_len; +extern const unsigned char matmul_q5_0_f32_f16acc_data[]; + +extern const uint64_t matmul_q5_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_q5_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_0_f32_fp32_len; +extern const unsigned char matmul_q5_0_f32_fp32_data[]; + +extern const uint64_t matmul_q5_0_q8_1_len; +extern const unsigned char matmul_q5_0_q8_1_data[]; + +extern const uint64_t matmul_q5_0_q8_1_fp32_len; +extern const unsigned char matmul_q5_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_q5_1_f16_len; +extern const unsigned char matmul_q5_1_f16_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_len; +extern const unsigned char matmul_q5_1_f16_aligned_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_cm1_len; +extern const unsigned char matmul_q5_1_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_cm2_len; +extern const unsigned char matmul_q5_1_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_f16acc_len; +extern const unsigned char matmul_q5_1_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_1_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q5_1_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_1_f16_aligned_fp32_len; +extern const unsigned char matmul_q5_1_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_1_f16_cm1_len; +extern const unsigned char matmul_q5_1_f16_cm1_data[]; + +extern const uint64_t matmul_q5_1_f16_cm2_len; +extern const unsigned char matmul_q5_1_f16_cm2_data[]; + +extern const uint64_t matmul_q5_1_f16_f16acc_len; +extern const unsigned char matmul_q5_1_f16_f16acc_data[]; + +extern const uint64_t matmul_q5_1_f16_f16acc_cm1_len; +extern const unsigned char matmul_q5_1_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_1_f16_f16acc_cm2_len; +extern const unsigned char matmul_q5_1_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_1_f16_fp32_len; +extern const unsigned char matmul_q5_1_f16_fp32_data[]; + +extern const uint64_t matmul_q5_1_f32_len; +extern const unsigned char matmul_q5_1_f32_data[]; + +extern const uint64_t matmul_q5_1_f32_aligned_len; +extern const unsigned char matmul_q5_1_f32_aligned_data[]; + +extern const uint64_t matmul_q5_1_f32_aligned_cm1_len; +extern const unsigned char matmul_q5_1_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_1_f32_aligned_f16acc_len; +extern const unsigned char matmul_q5_1_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_1_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_1_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_1_f32_aligned_fp32_len; +extern const unsigned char matmul_q5_1_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_1_f32_cm1_len; +extern const unsigned char matmul_q5_1_f32_cm1_data[]; + +extern const uint64_t matmul_q5_1_f32_f16acc_len; +extern const unsigned char matmul_q5_1_f32_f16acc_data[]; + +extern const uint64_t matmul_q5_1_f32_f16acc_cm1_len; +extern const unsigned char matmul_q5_1_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_1_f32_fp32_len; +extern const unsigned char matmul_q5_1_f32_fp32_data[]; + +extern const uint64_t matmul_q5_1_q8_1_len; +extern const unsigned char matmul_q5_1_q8_1_data[]; + +extern const uint64_t matmul_q5_1_q8_1_fp32_len; +extern const unsigned char matmul_q5_1_q8_1_fp32_data[]; + +extern const uint64_t matmul_q5_k_f16_len; +extern const unsigned char matmul_q5_k_f16_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_len; +extern const unsigned char matmul_q5_k_f16_aligned_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_cm1_len; +extern const unsigned char matmul_q5_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_cm2_len; +extern const unsigned char matmul_q5_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_q5_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q5_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_k_f16_aligned_fp32_len; +extern const unsigned char matmul_q5_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_k_f16_cm1_len; +extern const unsigned char matmul_q5_k_f16_cm1_data[]; + +extern const uint64_t matmul_q5_k_f16_cm2_len; +extern const unsigned char matmul_q5_k_f16_cm2_data[]; + +extern const uint64_t matmul_q5_k_f16_f16acc_len; +extern const unsigned char matmul_q5_k_f16_f16acc_data[]; + +extern const uint64_t matmul_q5_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_q5_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_q5_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q5_k_f16_fp32_len; +extern const unsigned char matmul_q5_k_f16_fp32_data[]; + +extern const uint64_t matmul_q5_k_f32_len; +extern const unsigned char matmul_q5_k_f32_data[]; + +extern const uint64_t matmul_q5_k_f32_aligned_len; +extern const unsigned char matmul_q5_k_f32_aligned_data[]; + +extern const uint64_t matmul_q5_k_f32_aligned_cm1_len; +extern const unsigned char matmul_q5_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q5_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_q5_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q5_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q5_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_k_f32_aligned_fp32_len; +extern const unsigned char matmul_q5_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q5_k_f32_cm1_len; +extern const unsigned char matmul_q5_k_f32_cm1_data[]; + +extern const uint64_t matmul_q5_k_f32_f16acc_len; +extern const unsigned char matmul_q5_k_f32_f16acc_data[]; + +extern const uint64_t matmul_q5_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_q5_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q5_k_f32_fp32_len; +extern const unsigned char matmul_q5_k_f32_fp32_data[]; + +extern const uint64_t matmul_q5_k_q8_1_len; +extern const unsigned char matmul_q5_k_q8_1_data[]; + +extern const uint64_t matmul_q5_k_q8_1_fp32_len; +extern const unsigned char matmul_q5_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_q6_k_f16_len; +extern const unsigned char matmul_q6_k_f16_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_len; +extern const unsigned char matmul_q6_k_f16_aligned_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_cm1_len; +extern const unsigned char matmul_q6_k_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_cm2_len; +extern const unsigned char matmul_q6_k_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_f16acc_len; +extern const unsigned char matmul_q6_k_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q6_k_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q6_k_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q6_k_f16_aligned_fp32_len; +extern const unsigned char matmul_q6_k_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q6_k_f16_cm1_len; +extern const unsigned char matmul_q6_k_f16_cm1_data[]; + +extern const uint64_t matmul_q6_k_f16_cm2_len; +extern const unsigned char matmul_q6_k_f16_cm2_data[]; + +extern const uint64_t matmul_q6_k_f16_f16acc_len; +extern const unsigned char matmul_q6_k_f16_f16acc_data[]; + +extern const uint64_t matmul_q6_k_f16_f16acc_cm1_len; +extern const unsigned char matmul_q6_k_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q6_k_f16_f16acc_cm2_len; +extern const unsigned char matmul_q6_k_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q6_k_f16_fp32_len; +extern const unsigned char matmul_q6_k_f16_fp32_data[]; + +extern const uint64_t matmul_q6_k_f32_len; +extern const unsigned char matmul_q6_k_f32_data[]; + +extern const uint64_t matmul_q6_k_f32_aligned_len; +extern const unsigned char matmul_q6_k_f32_aligned_data[]; + +extern const uint64_t matmul_q6_k_f32_aligned_cm1_len; +extern const unsigned char matmul_q6_k_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q6_k_f32_aligned_f16acc_len; +extern const unsigned char matmul_q6_k_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q6_k_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q6_k_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q6_k_f32_aligned_fp32_len; +extern const unsigned char matmul_q6_k_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q6_k_f32_cm1_len; +extern const unsigned char matmul_q6_k_f32_cm1_data[]; + +extern const uint64_t matmul_q6_k_f32_f16acc_len; +extern const unsigned char matmul_q6_k_f32_f16acc_data[]; + +extern const uint64_t matmul_q6_k_f32_f16acc_cm1_len; +extern const unsigned char matmul_q6_k_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q6_k_f32_fp32_len; +extern const unsigned char matmul_q6_k_f32_fp32_data[]; + +extern const uint64_t matmul_q6_k_q8_1_len; +extern const unsigned char matmul_q6_k_q8_1_data[]; + +extern const uint64_t matmul_q6_k_q8_1_fp32_len; +extern const unsigned char matmul_q6_k_q8_1_fp32_data[]; + +extern const uint64_t matmul_q8_0_f16_len; +extern const unsigned char matmul_q8_0_f16_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_len; +extern const unsigned char matmul_q8_0_f16_aligned_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_cm1_len; +extern const unsigned char matmul_q8_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_cm2_len; +extern const unsigned char matmul_q8_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_q8_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q8_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_q8_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_q8_0_f16_aligned_fp32_len; +extern const unsigned char matmul_q8_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_q8_0_f16_cm1_len; +extern const unsigned char matmul_q8_0_f16_cm1_data[]; + +extern const uint64_t matmul_q8_0_f16_cm2_len; +extern const unsigned char matmul_q8_0_f16_cm2_data[]; + +extern const uint64_t matmul_q8_0_f16_f16acc_len; +extern const unsigned char matmul_q8_0_f16_f16acc_data[]; + +extern const uint64_t matmul_q8_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_q8_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_q8_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_q8_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_q8_0_f16_fp32_len; +extern const unsigned char matmul_q8_0_f16_fp32_data[]; + +extern const uint64_t matmul_q8_0_f32_len; +extern const unsigned char matmul_q8_0_f32_data[]; + +extern const uint64_t matmul_q8_0_f32_aligned_len; +extern const unsigned char matmul_q8_0_f32_aligned_data[]; + +extern const uint64_t matmul_q8_0_f32_aligned_cm1_len; +extern const unsigned char matmul_q8_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_q8_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_q8_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_q8_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_q8_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_q8_0_f32_aligned_fp32_len; +extern const unsigned char matmul_q8_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_q8_0_f32_cm1_len; +extern const unsigned char matmul_q8_0_f32_cm1_data[]; + +extern const uint64_t matmul_q8_0_f32_f16acc_len; +extern const unsigned char matmul_q8_0_f32_f16acc_data[]; + +extern const uint64_t matmul_q8_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_q8_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_q8_0_f32_fp32_len; +extern const unsigned char matmul_q8_0_f32_fp32_data[]; + +extern const uint64_t matmul_q8_0_q8_1_len; +extern const unsigned char matmul_q8_0_q8_1_data[]; + +extern const uint64_t matmul_q8_0_q8_1_fp32_len; +extern const unsigned char matmul_q8_0_q8_1_fp32_data[]; + +extern const uint64_t matmul_tq3_1s_f16_len; +extern const unsigned char matmul_tq3_1s_f16_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_cm1_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_cm2_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_f16acc_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_tq3_1s_f16_aligned_fp32_len; +extern const unsigned char matmul_tq3_1s_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_tq3_1s_f16_cm1_len; +extern const unsigned char matmul_tq3_1s_f16_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f16_cm2_len; +extern const unsigned char matmul_tq3_1s_f16_cm2_data[]; + +extern const uint64_t matmul_tq3_1s_f16_f16acc_len; +extern const unsigned char matmul_tq3_1s_f16_f16acc_data[]; + +extern const uint64_t matmul_tq3_1s_f16_f16acc_cm1_len; +extern const unsigned char matmul_tq3_1s_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f16_f16acc_cm2_len; +extern const unsigned char matmul_tq3_1s_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_tq3_1s_f16_fp32_len; +extern const unsigned char matmul_tq3_1s_f16_fp32_data[]; + +extern const uint64_t matmul_tq3_1s_f32_len; +extern const unsigned char matmul_tq3_1s_f32_data[]; + +extern const uint64_t matmul_tq3_1s_f32_aligned_len; +extern const unsigned char matmul_tq3_1s_f32_aligned_data[]; + +extern const uint64_t matmul_tq3_1s_f32_aligned_cm1_len; +extern const unsigned char matmul_tq3_1s_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f32_aligned_f16acc_len; +extern const unsigned char matmul_tq3_1s_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_tq3_1s_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_tq3_1s_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f32_aligned_fp32_len; +extern const unsigned char matmul_tq3_1s_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_tq3_1s_f32_cm1_len; +extern const unsigned char matmul_tq3_1s_f32_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f32_f16acc_len; +extern const unsigned char matmul_tq3_1s_f32_f16acc_data[]; + +extern const uint64_t matmul_tq3_1s_f32_f16acc_cm1_len; +extern const unsigned char matmul_tq3_1s_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_tq3_1s_f32_fp32_len; +extern const unsigned char matmul_tq3_1s_f32_fp32_data[]; + +extern const uint64_t matmul_turbo2_0_f16_len; +extern const unsigned char matmul_turbo2_0_f16_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_cm1_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_cm2_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo2_0_f16_aligned_fp32_len; +extern const unsigned char matmul_turbo2_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo2_0_f16_cm1_len; +extern const unsigned char matmul_turbo2_0_f16_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f16_cm2_len; +extern const unsigned char matmul_turbo2_0_f16_cm2_data[]; + +extern const uint64_t matmul_turbo2_0_f16_f16acc_len; +extern const unsigned char matmul_turbo2_0_f16_f16acc_data[]; + +extern const uint64_t matmul_turbo2_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_turbo2_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_turbo2_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo2_0_f16_fp32_len; +extern const unsigned char matmul_turbo2_0_f16_fp32_data[]; + +extern const uint64_t matmul_turbo2_0_f32_len; +extern const unsigned char matmul_turbo2_0_f32_data[]; + +extern const uint64_t matmul_turbo2_0_f32_aligned_len; +extern const unsigned char matmul_turbo2_0_f32_aligned_data[]; + +extern const uint64_t matmul_turbo2_0_f32_aligned_cm1_len; +extern const unsigned char matmul_turbo2_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_turbo2_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo2_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo2_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f32_aligned_fp32_len; +extern const unsigned char matmul_turbo2_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo2_0_f32_cm1_len; +extern const unsigned char matmul_turbo2_0_f32_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f32_f16acc_len; +extern const unsigned char matmul_turbo2_0_f32_f16acc_data[]; + +extern const uint64_t matmul_turbo2_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_turbo2_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo2_0_f32_fp32_len; +extern const unsigned char matmul_turbo2_0_f32_fp32_data[]; + +extern const uint64_t matmul_turbo3_0_f16_len; +extern const unsigned char matmul_turbo3_0_f16_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_cm1_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_cm2_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo3_0_f16_aligned_fp32_len; +extern const unsigned char matmul_turbo3_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo3_0_f16_cm1_len; +extern const unsigned char matmul_turbo3_0_f16_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f16_cm2_len; +extern const unsigned char matmul_turbo3_0_f16_cm2_data[]; + +extern const uint64_t matmul_turbo3_0_f16_f16acc_len; +extern const unsigned char matmul_turbo3_0_f16_f16acc_data[]; + +extern const uint64_t matmul_turbo3_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_turbo3_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_turbo3_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo3_0_f16_fp32_len; +extern const unsigned char matmul_turbo3_0_f16_fp32_data[]; + +extern const uint64_t matmul_turbo3_0_f32_len; +extern const unsigned char matmul_turbo3_0_f32_data[]; + +extern const uint64_t matmul_turbo3_0_f32_aligned_len; +extern const unsigned char matmul_turbo3_0_f32_aligned_data[]; + +extern const uint64_t matmul_turbo3_0_f32_aligned_cm1_len; +extern const unsigned char matmul_turbo3_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_turbo3_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo3_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo3_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f32_aligned_fp32_len; +extern const unsigned char matmul_turbo3_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo3_0_f32_cm1_len; +extern const unsigned char matmul_turbo3_0_f32_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f32_f16acc_len; +extern const unsigned char matmul_turbo3_0_f32_f16acc_data[]; + +extern const uint64_t matmul_turbo3_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_turbo3_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo3_0_f32_fp32_len; +extern const unsigned char matmul_turbo3_0_f32_fp32_data[]; + +extern const uint64_t matmul_turbo4_0_f16_len; +extern const unsigned char matmul_turbo4_0_f16_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_cm1_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_cm2_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_cm2_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_f16acc_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_f16acc_cm2_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo4_0_f16_aligned_fp32_len; +extern const unsigned char matmul_turbo4_0_f16_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo4_0_f16_cm1_len; +extern const unsigned char matmul_turbo4_0_f16_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f16_cm2_len; +extern const unsigned char matmul_turbo4_0_f16_cm2_data[]; + +extern const uint64_t matmul_turbo4_0_f16_f16acc_len; +extern const unsigned char matmul_turbo4_0_f16_f16acc_data[]; + +extern const uint64_t matmul_turbo4_0_f16_f16acc_cm1_len; +extern const unsigned char matmul_turbo4_0_f16_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f16_f16acc_cm2_len; +extern const unsigned char matmul_turbo4_0_f16_f16acc_cm2_data[]; + +extern const uint64_t matmul_turbo4_0_f16_fp32_len; +extern const unsigned char matmul_turbo4_0_f16_fp32_data[]; + +extern const uint64_t matmul_turbo4_0_f32_len; +extern const unsigned char matmul_turbo4_0_f32_data[]; + +extern const uint64_t matmul_turbo4_0_f32_aligned_len; +extern const unsigned char matmul_turbo4_0_f32_aligned_data[]; + +extern const uint64_t matmul_turbo4_0_f32_aligned_cm1_len; +extern const unsigned char matmul_turbo4_0_f32_aligned_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f32_aligned_f16acc_len; +extern const unsigned char matmul_turbo4_0_f32_aligned_f16acc_data[]; + +extern const uint64_t matmul_turbo4_0_f32_aligned_f16acc_cm1_len; +extern const unsigned char matmul_turbo4_0_f32_aligned_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f32_aligned_fp32_len; +extern const unsigned char matmul_turbo4_0_f32_aligned_fp32_data[]; + +extern const uint64_t matmul_turbo4_0_f32_cm1_len; +extern const unsigned char matmul_turbo4_0_f32_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f32_f16acc_len; +extern const unsigned char matmul_turbo4_0_f32_f16acc_data[]; + +extern const uint64_t matmul_turbo4_0_f32_f16acc_cm1_len; +extern const unsigned char matmul_turbo4_0_f32_f16acc_cm1_data[]; + +extern const uint64_t matmul_turbo4_0_f32_fp32_len; +extern const unsigned char matmul_turbo4_0_f32_fp32_data[]; + +extern const uint64_t mul_f16_f16_f16_len; +extern const unsigned char mul_f16_f16_f16_data[]; + +extern const uint64_t mul_f16_f16_f32_len; +extern const unsigned char mul_f16_f16_f32_data[]; + +extern const uint64_t mul_f16_f32_f16_len; +extern const unsigned char mul_f16_f32_f16_data[]; + +extern const uint64_t mul_f16_f32_f32_len; +extern const unsigned char mul_f16_f32_f32_data[]; + +extern const uint64_t mul_f32_len; +extern const unsigned char mul_f32_data[]; + +extern const uint64_t mul_f32_f16_f16_len; +extern const unsigned char mul_f32_f16_f16_data[]; + +extern const uint64_t mul_f32_f16_f32_len; +extern const unsigned char mul_f32_f16_f32_data[]; + +extern const uint64_t mul_f32_f32_f16_len; +extern const unsigned char mul_f32_f32_f16_data[]; + +extern const uint64_t mul_f32_f32_f32_len; +extern const unsigned char mul_f32_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_bf16_f16_f32_len; +extern const unsigned char mul_mat_vec_bf16_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_bf16_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_bf16_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_bf16_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_bf16_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_bf16_f32_f32_len; +extern const unsigned char mul_mat_vec_bf16_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_bf16_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_bf16_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_bf16_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_bf16_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_f16_f16_f32_len; +extern const unsigned char mul_mat_vec_f16_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_f16_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_f16_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_f16_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_f16_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_f16_f32_f32_len; +extern const unsigned char mul_mat_vec_f16_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_f16_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_f16_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_f16_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_f16_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_f32_f16_f32_len; +extern const unsigned char mul_mat_vec_f32_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_f32_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_f32_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_f32_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_f32_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_f32_f32_f32_len; +extern const unsigned char mul_mat_vec_f32_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_f32_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_f32_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_f32_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_f32_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_bf16_f32_f32_len; +extern const unsigned char mul_mat_vec_id_bf16_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_bf16_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_bf16_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_bf16_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_bf16_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_f16_f32_f32_len; +extern const unsigned char mul_mat_vec_id_f16_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_f16_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_f16_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_f16_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_f16_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_f32_f32_f32_len; +extern const unsigned char mul_mat_vec_id_f32_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_f32_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_f32_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_f32_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_f32_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq1_m_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq1_m_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq1_m_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_iq1_m_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq1_m_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_m_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq1_m_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq1_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq1_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq1_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_iq1_s_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq1_s_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq1_s_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq1_s_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_s_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq2_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq2_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq2_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xs_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq2_xs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq2_xs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq2_xs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xxs_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq2_xxs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xxs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq2_xxs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq2_xxs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq2_xxs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_s_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq3_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq3_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq3_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_xxs_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq3_xxs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_xxs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq3_xxs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq3_xxs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq3_xxs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_nl_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq4_nl_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_nl_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq4_nl_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_nl_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq4_nl_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_xs_f32_f32_len; +extern const unsigned char mul_mat_vec_id_iq4_xs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_xs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_iq4_xs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_iq4_xs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_iq4_xs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_f32_f32_len; +extern const unsigned char mul_mat_vec_id_mxfp4_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_mxfp4_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_mxfp4_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_mxfp4_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_mxfp4_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_mxfp4_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_mxfp4_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_nvfp4_f32_f32_len; +extern const unsigned char mul_mat_vec_id_nvfp4_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_nvfp4_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_nvfp4_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_nvfp4_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_nvfp4_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q1_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q1_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q1_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q1_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q1_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q1_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q2_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q2_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q2_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q2_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q2_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q2_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q2_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q3_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q3_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q3_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q3_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q3_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q3_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q3_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q4_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q4_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q4_1_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_1_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_1_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q4_1_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_1_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_1_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_1_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q4_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q4_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q4_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q4_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q4_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q5_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q5_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q5_1_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_1_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_1_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q5_1_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_1_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_1_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_1_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q5_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q5_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q5_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q5_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q5_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q6_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q6_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q6_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q6_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q6_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q6_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q6_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_q8_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q8_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q8_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_id_q8_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_q8_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_q8_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_q8_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_tq3_1s_f32_f32_len; +extern const unsigned char mul_mat_vec_id_tq3_1s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_tq3_1s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_tq3_1s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_tq3_1s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_tq3_1s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_tq4_1s_f32_f32_len; +extern const unsigned char mul_mat_vec_id_tq4_1s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_tq4_1s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_tq4_1s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_tq4_1s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_tq4_1s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_turbo2_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_turbo2_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_turbo2_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_turbo2_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_turbo2_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_turbo2_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_turbo3_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_turbo3_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_turbo3_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_turbo3_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_turbo3_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_turbo3_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_id_turbo4_0_f32_f32_len; +extern const unsigned char mul_mat_vec_id_turbo4_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_id_turbo4_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_id_turbo4_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_id_turbo4_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_id_turbo4_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f16_f32_len; +extern const unsigned char mul_mat_vec_iq1_m_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_m_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_m_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f32_f32_len; +extern const unsigned char mul_mat_vec_iq1_m_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_m_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_m_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_q8_1_f32_len; +extern const unsigned char mul_mat_vec_iq1_m_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_m_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_m_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_m_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f16_f32_len; +extern const unsigned char mul_mat_vec_iq1_s_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_s_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_s_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f32_f32_len; +extern const unsigned char mul_mat_vec_iq1_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_q8_1_f32_len; +extern const unsigned char mul_mat_vec_iq1_s_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq1_s_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq1_s_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq1_s_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f16_f32_len; +extern const unsigned char mul_mat_vec_iq2_s_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_s_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_s_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f32_f32_len; +extern const unsigned char mul_mat_vec_iq2_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f16_f32_len; +extern const unsigned char mul_mat_vec_iq2_xs_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_xs_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_xs_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f32_f32_len; +extern const unsigned char mul_mat_vec_iq2_xs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_xs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_xs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_xs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f16_f32_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f32_f32_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq2_xxs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq2_xxs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f16_f32_len; +extern const unsigned char mul_mat_vec_iq3_s_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq3_s_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq3_s_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f32_f32_len; +extern const unsigned char mul_mat_vec_iq3_s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq3_s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq3_s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq3_s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f16_f32_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f32_f32_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq3_xxs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq3_xxs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f16_f32_len; +extern const unsigned char mul_mat_vec_iq4_nl_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq4_nl_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq4_nl_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f32_f32_len; +extern const unsigned char mul_mat_vec_iq4_nl_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq4_nl_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq4_nl_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq4_nl_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f16_f32_len; +extern const unsigned char mul_mat_vec_iq4_xs_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq4_xs_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq4_xs_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f32_f32_len; +extern const unsigned char mul_mat_vec_iq4_xs_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_iq4_xs_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_iq4_xs_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_iq4_xs_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f16_f32_len; +extern const unsigned char mul_mat_vec_mxfp4_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_mxfp4_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_mxfp4_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f32_f32_len; +extern const unsigned char mul_mat_vec_mxfp4_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_mxfp4_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_mxfp4_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_q8_1_f32_len; +extern const unsigned char mul_mat_vec_mxfp4_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_mxfp4_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_mxfp4_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_mxfp4_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_nc_f16_f32_len; +extern const unsigned char mul_mat_vec_nc_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f16_f32_len; +extern const unsigned char mul_mat_vec_nvfp4_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_nvfp4_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_nvfp4_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f32_f32_len; +extern const unsigned char mul_mat_vec_nvfp4_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_nvfp4_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_nvfp4_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_nvfp4_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_p021_f16_f32_len; +extern const unsigned char mul_mat_vec_p021_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_p021_f16_f32_subgroup_add_len; +extern const unsigned char mul_mat_vec_p021_f16_f32_subgroup_add_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f16_f32_len; +extern const unsigned char mul_mat_vec_q1_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q1_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q1_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f32_f32_len; +extern const unsigned char mul_mat_vec_q1_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q1_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q1_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q1_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f16_f32_len; +extern const unsigned char mul_mat_vec_q2_k_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q2_k_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q2_k_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f32_f32_len; +extern const unsigned char mul_mat_vec_q2_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q2_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q2_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q2_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q2_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q2_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q2_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q2_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q2_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q2_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f16_f32_len; +extern const unsigned char mul_mat_vec_q3_k_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q3_k_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q3_k_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f32_f32_len; +extern const unsigned char mul_mat_vec_q3_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q3_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q3_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q3_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q3_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q3_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q3_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q3_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q3_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q3_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f16_f32_len; +extern const unsigned char mul_mat_vec_q4_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f32_f32_len; +extern const unsigned char mul_mat_vec_q4_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q4_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f16_f32_len; +extern const unsigned char mul_mat_vec_q4_1_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_1_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_1_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f32_f32_len; +extern const unsigned char mul_mat_vec_q4_1_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_1_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_1_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_1_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_1_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q4_1_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_1_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_1_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_1_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_1_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f16_f32_len; +extern const unsigned char mul_mat_vec_q4_k_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_k_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_k_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f32_f32_len; +extern const unsigned char mul_mat_vec_q4_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q4_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q4_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q4_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q4_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q4_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q4_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f16_f32_len; +extern const unsigned char mul_mat_vec_q5_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f32_f32_len; +extern const unsigned char mul_mat_vec_q5_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q5_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f16_f32_len; +extern const unsigned char mul_mat_vec_q5_1_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_1_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_1_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f32_f32_len; +extern const unsigned char mul_mat_vec_q5_1_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_1_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_1_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_1_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_1_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q5_1_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_1_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_1_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_1_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_1_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f16_f32_len; +extern const unsigned char mul_mat_vec_q5_k_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_k_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_k_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f32_f32_len; +extern const unsigned char mul_mat_vec_q5_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q5_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q5_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q5_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q5_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q5_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q5_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f16_f32_len; +extern const unsigned char mul_mat_vec_q6_k_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q6_k_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q6_k_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f32_f32_len; +extern const unsigned char mul_mat_vec_q6_k_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q6_k_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q6_k_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q6_k_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q6_k_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q6_k_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q6_k_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q6_k_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q6_k_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q6_k_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f16_f32_len; +extern const unsigned char mul_mat_vec_q8_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q8_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q8_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f32_f32_len; +extern const unsigned char mul_mat_vec_q8_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q8_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q8_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q8_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_q8_0_q8_1_f32_len; +extern const unsigned char mul_mat_vec_q8_0_q8_1_f32_data[]; + +extern const uint64_t mul_mat_vec_q8_0_q8_1_f32_subgroup_len; +extern const unsigned char mul_mat_vec_q8_0_q8_1_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_q8_0_q8_1_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_q8_0_q8_1_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f16_f32_len; +extern const unsigned char mul_mat_vec_tq3_1s_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_tq3_1s_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_tq3_1s_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f32_f32_len; +extern const unsigned char mul_mat_vec_tq3_1s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_tq3_1s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_tq3_1s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_tq3_1s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f16_f32_len; +extern const unsigned char mul_mat_vec_tq4_1s_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_tq4_1s_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_tq4_1s_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f32_f32_len; +extern const unsigned char mul_mat_vec_tq4_1s_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_tq4_1s_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_tq4_1s_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_tq4_1s_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f16_f32_len; +extern const unsigned char mul_mat_vec_turbo2_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo2_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo2_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f32_f32_len; +extern const unsigned char mul_mat_vec_turbo2_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo2_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo2_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo2_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f16_f32_len; +extern const unsigned char mul_mat_vec_turbo3_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo3_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo3_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f32_f32_len; +extern const unsigned char mul_mat_vec_turbo3_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo3_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo3_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo3_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f16_f32_len; +extern const unsigned char mul_mat_vec_turbo4_0_f16_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f16_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo4_0_f16_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f16_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo4_0_f16_f32_subgroup_no_shmem_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f32_f32_len; +extern const unsigned char mul_mat_vec_turbo4_0_f32_f32_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f32_f32_subgroup_len; +extern const unsigned char mul_mat_vec_turbo4_0_f32_f32_subgroup_data[]; + +extern const uint64_t mul_mat_vec_turbo4_0_f32_f32_subgroup_no_shmem_len; +extern const unsigned char mul_mat_vec_turbo4_0_f32_f32_subgroup_no_shmem_data[]; + +extern const uint64_t multi_add_f32_len; +extern const unsigned char multi_add_f32_data[]; + +extern const uint64_t multi_add_rms_f32_len; +extern const unsigned char multi_add_rms_f32_data[]; + +extern const uint64_t neg_f16_len; +extern const unsigned char neg_f16_data[]; + +extern const uint64_t neg_f32_len; +extern const unsigned char neg_f32_data[]; + +extern const uint64_t norm_f32_len; +extern const unsigned char norm_f32_data[]; + +extern const uint64_t opt_step_adamw_f32_len; +extern const unsigned char opt_step_adamw_f32_data[]; + +extern const uint64_t opt_step_sgd_f32_len; +extern const unsigned char opt_step_sgd_f32_data[]; + +extern const uint64_t pad_f32_len; +extern const unsigned char pad_f32_data[]; + +extern const uint64_t pool2d_f32_len; +extern const unsigned char pool2d_f32_data[]; + +extern const uint64_t quantize_q8_1_len; +extern const unsigned char quantize_q8_1_data[]; + +extern const uint64_t quantize_q8_1_subgroup_len; +extern const unsigned char quantize_q8_1_subgroup_data[]; + +extern const uint64_t quantize_q8_1_x4_len; +extern const unsigned char quantize_q8_1_x4_data[]; + +extern const uint64_t quantize_q8_1_x4_subgroup_len; +extern const unsigned char quantize_q8_1_x4_subgroup_data[]; + +extern const uint64_t reglu_f16_len; +extern const unsigned char reglu_f16_data[]; + +extern const uint64_t reglu_f32_len; +extern const unsigned char reglu_f32_data[]; + +extern const uint64_t relu_f16_len; +extern const unsigned char relu_f16_data[]; + +extern const uint64_t relu_f32_len; +extern const unsigned char relu_f32_data[]; + +extern const uint64_t repeat_back_f32_len; +extern const unsigned char repeat_back_f32_data[]; + +extern const uint64_t repeat_f32_len; +extern const unsigned char repeat_f32_data[]; + +extern const uint64_t rms_norm_back_f32_len; +extern const unsigned char rms_norm_back_f32_data[]; + +extern const uint64_t rms_norm_f32_len; +extern const unsigned char rms_norm_f32_data[]; + +extern const uint64_t rms_norm_mul_rope_f32_f16_len; +extern const unsigned char rms_norm_mul_rope_f32_f16_data[]; + +extern const uint64_t rms_norm_mul_rope_f32_f32_len; +extern const unsigned char rms_norm_mul_rope_f32_f32_data[]; + +extern const uint64_t rms_norm_partials_f32_len; +extern const unsigned char rms_norm_partials_f32_data[]; + +extern const uint64_t roll_f32_len; +extern const unsigned char roll_f32_data[]; + +extern const uint64_t rope_multi_f16_len; +extern const unsigned char rope_multi_f16_data[]; + +extern const uint64_t rope_multi_f32_len; +extern const unsigned char rope_multi_f32_data[]; + +extern const uint64_t rope_multi_f32_f16_len; +extern const unsigned char rope_multi_f32_f16_data[]; + +extern const uint64_t rope_neox_f16_len; +extern const unsigned char rope_neox_f16_data[]; + +extern const uint64_t rope_neox_f32_len; +extern const unsigned char rope_neox_f32_data[]; + +extern const uint64_t rope_neox_f32_f16_len; +extern const unsigned char rope_neox_f32_f16_data[]; + +extern const uint64_t rope_norm_f16_len; +extern const unsigned char rope_norm_f16_data[]; + +extern const uint64_t rope_norm_f32_len; +extern const unsigned char rope_norm_f32_data[]; + +extern const uint64_t rope_norm_f32_f16_len; +extern const unsigned char rope_norm_f32_f16_data[]; + +extern const uint64_t rope_vision_f16_len; +extern const unsigned char rope_vision_f16_data[]; + +extern const uint64_t rope_vision_f32_len; +extern const unsigned char rope_vision_f32_data[]; + +extern const uint64_t round_f16_len; +extern const unsigned char round_f16_data[]; + +extern const uint64_t round_f32_len; +extern const unsigned char round_f32_data[]; + +extern const uint64_t rwkv_wkv6_f32_len; +extern const unsigned char rwkv_wkv6_f32_data[]; + +extern const uint64_t rwkv_wkv7_f32_len; +extern const unsigned char rwkv_wkv7_f32_data[]; + +extern const uint64_t scale_f32_len; +extern const unsigned char scale_f32_data[]; + +extern const uint64_t set_rows_bf16_i32_len; +extern const unsigned char set_rows_bf16_i32_data[]; + +extern const uint64_t set_rows_bf16_i64_len; +extern const unsigned char set_rows_bf16_i64_data[]; + +extern const uint64_t set_rows_f16_i32_len; +extern const unsigned char set_rows_f16_i32_data[]; + +extern const uint64_t set_rows_f16_i64_len; +extern const unsigned char set_rows_f16_i64_data[]; + +extern const uint64_t set_rows_f32_i32_len; +extern const unsigned char set_rows_f32_i32_data[]; + +extern const uint64_t set_rows_f32_i64_len; +extern const unsigned char set_rows_f32_i64_data[]; + +extern const uint64_t set_rows_iq4_nl_i32_len; +extern const unsigned char set_rows_iq4_nl_i32_data[]; + +extern const uint64_t set_rows_iq4_nl_i64_len; +extern const unsigned char set_rows_iq4_nl_i64_data[]; + +extern const uint64_t set_rows_q1_0_i32_len; +extern const unsigned char set_rows_q1_0_i32_data[]; + +extern const uint64_t set_rows_q1_0_i64_len; +extern const unsigned char set_rows_q1_0_i64_data[]; + +extern const uint64_t set_rows_q4_0_i32_len; +extern const unsigned char set_rows_q4_0_i32_data[]; + +extern const uint64_t set_rows_q4_0_i64_len; +extern const unsigned char set_rows_q4_0_i64_data[]; + +extern const uint64_t set_rows_q4_1_i32_len; +extern const unsigned char set_rows_q4_1_i32_data[]; + +extern const uint64_t set_rows_q4_1_i64_len; +extern const unsigned char set_rows_q4_1_i64_data[]; + +extern const uint64_t set_rows_q5_0_i32_len; +extern const unsigned char set_rows_q5_0_i32_data[]; + +extern const uint64_t set_rows_q5_0_i64_len; +extern const unsigned char set_rows_q5_0_i64_data[]; + +extern const uint64_t set_rows_q5_1_i32_len; +extern const unsigned char set_rows_q5_1_i32_data[]; + +extern const uint64_t set_rows_q5_1_i64_len; +extern const unsigned char set_rows_q5_1_i64_data[]; + +extern const uint64_t set_rows_q8_0_i32_len; +extern const unsigned char set_rows_q8_0_i32_data[]; + +extern const uint64_t set_rows_q8_0_i64_len; +extern const unsigned char set_rows_q8_0_i64_data[]; + +extern const uint64_t set_rows_tq3_1s_i32_len; +extern const unsigned char set_rows_tq3_1s_i32_data[]; + +extern const uint64_t set_rows_tq3_1s_i64_len; +extern const unsigned char set_rows_tq3_1s_i64_data[]; + +extern const uint64_t set_rows_tq4_1s_i32_len; +extern const unsigned char set_rows_tq4_1s_i32_data[]; + +extern const uint64_t set_rows_tq4_1s_i64_len; +extern const unsigned char set_rows_tq4_1s_i64_data[]; + +extern const uint64_t set_rows_turbo2_0_i32_len; +extern const unsigned char set_rows_turbo2_0_i32_data[]; + +extern const uint64_t set_rows_turbo2_0_i64_len; +extern const unsigned char set_rows_turbo2_0_i64_data[]; + +extern const uint64_t set_rows_turbo3_0_i32_len; +extern const unsigned char set_rows_turbo3_0_i32_data[]; + +extern const uint64_t set_rows_turbo3_0_i64_len; +extern const unsigned char set_rows_turbo3_0_i64_data[]; + +extern const uint64_t set_rows_turbo4_0_i32_len; +extern const unsigned char set_rows_turbo4_0_i32_data[]; + +extern const uint64_t set_rows_turbo4_0_i64_len; +extern const unsigned char set_rows_turbo4_0_i64_data[]; + +extern const uint64_t sgn_f16_len; +extern const unsigned char sgn_f16_data[]; + +extern const uint64_t sgn_f32_len; +extern const unsigned char sgn_f32_data[]; + +extern const uint64_t sigmoid_f16_len; +extern const unsigned char sigmoid_f16_data[]; + +extern const uint64_t sigmoid_f32_len; +extern const unsigned char sigmoid_f32_data[]; + +extern const uint64_t silu_back_f32_len; +extern const unsigned char silu_back_f32_data[]; + +extern const uint64_t silu_f16_len; +extern const unsigned char silu_f16_data[]; + +extern const uint64_t silu_f32_len; +extern const unsigned char silu_f32_data[]; + +extern const uint64_t sin_f32_len; +extern const unsigned char sin_f32_data[]; + +extern const uint64_t soft_max_back_f32_len; +extern const unsigned char soft_max_back_f32_data[]; + +extern const uint64_t soft_max_f32_len; +extern const unsigned char soft_max_f32_data[]; + +extern const uint64_t soft_max_f32_f16_len; +extern const unsigned char soft_max_f32_f16_data[]; + +extern const uint64_t soft_max_large1_f32_len; +extern const unsigned char soft_max_large1_f32_data[]; + +extern const uint64_t soft_max_large1_f32_f16_len; +extern const unsigned char soft_max_large1_f32_f16_data[]; + +extern const uint64_t soft_max_large2_f32_len; +extern const unsigned char soft_max_large2_f32_data[]; + +extern const uint64_t soft_max_large2_f32_f16_len; +extern const unsigned char soft_max_large2_f32_f16_data[]; + +extern const uint64_t soft_max_large3_f32_len; +extern const unsigned char soft_max_large3_f32_data[]; + +extern const uint64_t soft_max_large3_f32_f16_len; +extern const unsigned char soft_max_large3_f32_f16_data[]; + +extern const uint64_t softplus_f16_len; +extern const unsigned char softplus_f16_data[]; + +extern const uint64_t softplus_f32_len; +extern const unsigned char softplus_f32_data[]; + +extern const uint64_t solve_tri_f32_len; +extern const unsigned char solve_tri_f32_data[]; + +extern const uint64_t split_k_reduce_len; +extern const unsigned char split_k_reduce_data[]; + +extern const uint64_t sqr_f32_len; +extern const unsigned char sqr_f32_data[]; + +extern const uint64_t sqrt_f32_len; +extern const unsigned char sqrt_f32_data[]; + +extern const uint64_t ssm_conv_f32_len; +extern const unsigned char ssm_conv_f32_data[]; + +extern const uint64_t ssm_scan_f32_len; +extern const unsigned char ssm_scan_f32_data[]; + +extern const uint64_t ssm_scan_subgroup_f32_len; +extern const unsigned char ssm_scan_subgroup_f32_data[]; + +extern const uint64_t step_f16_len; +extern const unsigned char step_f16_data[]; + +extern const uint64_t step_f32_len; +extern const unsigned char step_f32_data[]; + +extern const uint64_t sub_f16_f16_f16_len; +extern const unsigned char sub_f16_f16_f16_data[]; + +extern const uint64_t sub_f16_f16_f32_len; +extern const unsigned char sub_f16_f16_f32_data[]; + +extern const uint64_t sub_f16_f32_f16_len; +extern const unsigned char sub_f16_f32_f16_data[]; + +extern const uint64_t sub_f16_f32_f32_len; +extern const unsigned char sub_f16_f32_f32_data[]; + +extern const uint64_t sub_f32_len; +extern const unsigned char sub_f32_data[]; + +extern const uint64_t sub_f32_f16_f16_len; +extern const unsigned char sub_f32_f16_f16_data[]; + +extern const uint64_t sub_f32_f16_f32_len; +extern const unsigned char sub_f32_f16_f32_data[]; + +extern const uint64_t sub_f32_f32_f16_len; +extern const unsigned char sub_f32_f32_f16_data[]; + +extern const uint64_t sub_f32_f32_f32_len; +extern const unsigned char sub_f32_f32_f32_data[]; + +extern const uint64_t sum_rows_f32_len; +extern const unsigned char sum_rows_f32_data[]; + +extern const uint64_t swiglu_f16_len; +extern const unsigned char swiglu_f16_data[]; + +extern const uint64_t swiglu_f32_len; +extern const unsigned char swiglu_f32_data[]; + +extern const uint64_t swiglu_oai_f16_len; +extern const unsigned char swiglu_oai_f16_data[]; + +extern const uint64_t swiglu_oai_f32_len; +extern const unsigned char swiglu_oai_f32_data[]; + +extern const uint64_t tanh_f16_len; +extern const unsigned char tanh_f16_data[]; + +extern const uint64_t tanh_f32_len; +extern const unsigned char tanh_f32_data[]; + +extern const uint64_t timestep_embedding_f32_len; +extern const unsigned char timestep_embedding_f32_data[]; + +extern const uint64_t topk_argsort_f32_len; +extern const unsigned char topk_argsort_f32_data[]; + +extern const uint64_t topk_moe_f32_len; +extern const unsigned char topk_moe_f32_data[]; + +extern const uint64_t topk_nary_search_f32_len; +extern const unsigned char topk_nary_search_f32_data[]; + +extern const uint64_t tri_f16_len; +extern const unsigned char tri_f16_data[]; + +extern const uint64_t tri_f32_len; +extern const unsigned char tri_f32_data[]; + +extern const uint64_t trunc_f16_len; +extern const unsigned char trunc_f16_data[]; + +extern const uint64_t trunc_f32_len; +extern const unsigned char trunc_f32_data[]; + +extern const uint64_t turbo_wht_len; +extern const unsigned char turbo_wht_data[]; + +extern const uint64_t upscale_f32_len; +extern const unsigned char upscale_f32_data[]; + +extern const uint64_t xielu_f16_len; +extern const unsigned char xielu_f16_data[]; + +extern const uint64_t xielu_f32_len; +extern const unsigned char xielu_f32_data[]; + +extern const void * add_data[2][2][2]; +extern const uint64_t add_len[2][2][2]; +extern const void * sub_data[2][2][2]; +extern const uint64_t sub_len[2][2][2]; +extern const void * mul_data[2][2][2]; +extern const uint64_t mul_len[2][2][2]; +extern const void * div_data[2][2][2]; +extern const uint64_t div_len[2][2][2]; +extern const void * add_rms_data[2][2][2]; +extern const uint64_t add_rms_len[2][2][2]; +extern const void * arr_dmmv_f32_f16_f32_data[3]; +extern const uint64_t arr_dmmv_f32_f16_f32_len[3]; +extern const void * arr_dmmv_f16_f16_f32_data[3]; +extern const uint64_t arr_dmmv_f16_f16_f32_len[3]; +extern const void * arr_dmmv_q1_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q1_0_f16_f32_len[3]; +extern const void * arr_dmmv_q4_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q4_0_f16_f32_len[3]; +extern const void * arr_dmmv_q4_1_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q4_1_f16_f32_len[3]; +extern const void * arr_dmmv_q5_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q5_0_f16_f32_len[3]; +extern const void * arr_dmmv_q5_1_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q5_1_f16_f32_len[3]; +extern const void * arr_dmmv_q8_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q8_0_f16_f32_len[3]; +extern const void * arr_dmmv_q2_k_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q2_k_f16_f32_len[3]; +extern const void * arr_dmmv_q3_k_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q3_k_f16_f32_len[3]; +extern const void * arr_dmmv_q4_k_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q4_k_f16_f32_len[3]; +extern const void * arr_dmmv_q5_k_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q5_k_f16_f32_len[3]; +extern const void * arr_dmmv_q6_k_f16_f32_data[3]; +extern const uint64_t arr_dmmv_q6_k_f16_f32_len[3]; +extern const void * arr_dmmv_iq1_s_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_s_f16_f32_len[3]; +extern const void * arr_dmmv_iq1_m_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_m_f16_f32_len[3]; +extern const void * arr_dmmv_iq2_xxs_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_xxs_f16_f32_len[3]; +extern const void * arr_dmmv_iq2_xs_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_xs_f16_f32_len[3]; +extern const void * arr_dmmv_iq2_s_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_s_f16_f32_len[3]; +extern const void * arr_dmmv_iq3_xxs_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq3_xxs_f16_f32_len[3]; +extern const void * arr_dmmv_iq3_s_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq3_s_f16_f32_len[3]; +extern const void * arr_dmmv_iq4_xs_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq4_xs_f16_f32_len[3]; +extern const void * arr_dmmv_iq4_nl_f16_f32_data[3]; +extern const uint64_t arr_dmmv_iq4_nl_f16_f32_len[3]; +extern const void * arr_dmmv_mxfp4_f16_f32_data[3]; +extern const uint64_t arr_dmmv_mxfp4_f16_f32_len[3]; +extern const void * arr_dmmv_nvfp4_f16_f32_data[3]; +extern const uint64_t arr_dmmv_nvfp4_f16_f32_len[3]; +extern const void * arr_dmmv_bf16_f16_f32_data[3]; +extern const uint64_t arr_dmmv_bf16_f16_f32_len[3]; +extern const void * arr_dmmv_turbo2_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_turbo2_0_f16_f32_len[3]; +extern const void * arr_dmmv_turbo3_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_turbo3_0_f16_f32_len[3]; +extern const void * arr_dmmv_turbo4_0_f16_f32_data[3]; +extern const uint64_t arr_dmmv_turbo4_0_f16_f32_len[3]; +extern const void * arr_dmmv_tq3_1s_f16_f32_data[3]; +extern const uint64_t arr_dmmv_tq3_1s_f16_f32_len[3]; +extern const void * arr_dmmv_tq4_1s_f16_f32_data[3]; +extern const uint64_t arr_dmmv_tq4_1s_f16_f32_len[3]; +extern const void * arr_dmmv_f32_f32_f32_data[3]; +extern const uint64_t arr_dmmv_f32_f32_f32_len[3]; +extern const void * arr_dmmv_id_f32_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_f32_f32_f32_len[3]; +extern const void * arr_dmmv_f16_f32_f32_data[3]; +extern const uint64_t arr_dmmv_f16_f32_f32_len[3]; +extern const void * arr_dmmv_id_f16_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_f16_f32_f32_len[3]; +extern const void * arr_dmmv_q1_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q1_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_q1_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q1_0_f32_f32_len[3]; +extern const void * arr_dmmv_q4_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q4_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_q4_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_0_f32_f32_len[3]; +extern const void * arr_dmmv_q4_1_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q4_1_f32_f32_len[3]; +extern const void * arr_dmmv_id_q4_1_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_1_f32_f32_len[3]; +extern const void * arr_dmmv_q5_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q5_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_q5_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_0_f32_f32_len[3]; +extern const void * arr_dmmv_q5_1_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q5_1_f32_f32_len[3]; +extern const void * arr_dmmv_id_q5_1_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_1_f32_f32_len[3]; +extern const void * arr_dmmv_q8_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q8_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_q8_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q8_0_f32_f32_len[3]; +extern const void * arr_dmmv_q2_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q2_k_f32_f32_len[3]; +extern const void * arr_dmmv_id_q2_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q2_k_f32_f32_len[3]; +extern const void * arr_dmmv_q3_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q3_k_f32_f32_len[3]; +extern const void * arr_dmmv_id_q3_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q3_k_f32_f32_len[3]; +extern const void * arr_dmmv_q4_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q4_k_f32_f32_len[3]; +extern const void * arr_dmmv_id_q4_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_k_f32_f32_len[3]; +extern const void * arr_dmmv_q5_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q5_k_f32_f32_len[3]; +extern const void * arr_dmmv_id_q5_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_k_f32_f32_len[3]; +extern const void * arr_dmmv_q6_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_q6_k_f32_f32_len[3]; +extern const void * arr_dmmv_id_q6_k_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_q6_k_f32_f32_len[3]; +extern const void * arr_dmmv_iq1_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_s_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq1_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq1_s_f32_f32_len[3]; +extern const void * arr_dmmv_iq1_m_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_m_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq1_m_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq1_m_f32_f32_len[3]; +extern const void * arr_dmmv_iq2_xxs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_xxs_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq2_xxs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq2_xxs_f32_f32_len[3]; +extern const void * arr_dmmv_iq2_xs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_xs_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq2_xs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq2_xs_f32_f32_len[3]; +extern const void * arr_dmmv_iq2_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq2_s_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq2_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq2_s_f32_f32_len[3]; +extern const void * arr_dmmv_iq3_xxs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq3_xxs_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq3_xxs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq3_xxs_f32_f32_len[3]; +extern const void * arr_dmmv_iq3_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq3_s_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq3_s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq3_s_f32_f32_len[3]; +extern const void * arr_dmmv_iq4_xs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq4_xs_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq4_xs_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq4_xs_f32_f32_len[3]; +extern const void * arr_dmmv_iq4_nl_f32_f32_data[3]; +extern const uint64_t arr_dmmv_iq4_nl_f32_f32_len[3]; +extern const void * arr_dmmv_id_iq4_nl_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq4_nl_f32_f32_len[3]; +extern const void * arr_dmmv_mxfp4_f32_f32_data[3]; +extern const uint64_t arr_dmmv_mxfp4_f32_f32_len[3]; +extern const void * arr_dmmv_id_mxfp4_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_mxfp4_f32_f32_len[3]; +extern const void * arr_dmmv_nvfp4_f32_f32_data[3]; +extern const uint64_t arr_dmmv_nvfp4_f32_f32_len[3]; +extern const void * arr_dmmv_id_nvfp4_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_nvfp4_f32_f32_len[3]; +extern const void * arr_dmmv_bf16_f32_f32_data[3]; +extern const uint64_t arr_dmmv_bf16_f32_f32_len[3]; +extern const void * arr_dmmv_id_bf16_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_bf16_f32_f32_len[3]; +extern const void * arr_dmmv_turbo2_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_turbo2_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_turbo2_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_turbo2_0_f32_f32_len[3]; +extern const void * arr_dmmv_turbo3_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_turbo3_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_turbo3_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_turbo3_0_f32_f32_len[3]; +extern const void * arr_dmmv_turbo4_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_turbo4_0_f32_f32_len[3]; +extern const void * arr_dmmv_id_turbo4_0_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_turbo4_0_f32_f32_len[3]; +extern const void * arr_dmmv_tq3_1s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_tq3_1s_f32_f32_len[3]; +extern const void * arr_dmmv_id_tq3_1s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_tq3_1s_f32_f32_len[3]; +extern const void * arr_dmmv_tq4_1s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_tq4_1s_f32_f32_len[3]; +extern const void * arr_dmmv_id_tq4_1s_f32_f32_data[3]; +extern const uint64_t arr_dmmv_id_tq4_1s_f32_f32_len[3]; +extern const void * arr_dmmv_q4_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q4_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q4_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_q4_1_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q4_1_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q4_1_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_1_q8_1_f32_len[3]; +extern const void * arr_dmmv_q5_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q5_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q5_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_q5_1_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q5_1_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q5_1_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_1_q8_1_f32_len[3]; +extern const void * arr_dmmv_q8_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q8_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q8_0_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q8_0_q8_1_f32_len[3]; +extern const void * arr_dmmv_q2_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q2_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q2_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q2_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_q3_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q3_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q3_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q3_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_q4_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q4_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q4_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q4_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_q5_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q5_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q5_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q5_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_q6_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_q6_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_q6_k_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_q6_k_q8_1_f32_len[3]; +extern const void * arr_dmmv_iq1_s_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_s_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_iq1_s_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq1_s_q8_1_f32_len[3]; +extern const void * arr_dmmv_iq1_m_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_iq1_m_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_iq1_m_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_iq1_m_q8_1_f32_len[3]; +extern const void * arr_dmmv_mxfp4_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_mxfp4_q8_1_f32_len[3]; +extern const void * arr_dmmv_id_mxfp4_q8_1_f32_data[3]; +extern const uint64_t arr_dmmv_id_mxfp4_q8_1_f32_len[3]; diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 3a21c7252236..89f2722d6e7e 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -3536,7 +3536,9 @@ static void ggml_vk_load_shaders(vk_device& device) { CREATE_FA(GGML_TYPE_Q5_1, q5_1, FA_SCALAR, ) CREATE_FA(GGML_TYPE_IQ4_NL, iq4_nl, FA_SCALAR, ) } + CREATE_FA(GGML_TYPE_TURBO2_0, turbo2_0, FA_SCALAR, ) CREATE_FA(GGML_TYPE_TURBO3_0, turbo3_0, FA_SCALAR, ) + CREATE_FA(GGML_TYPE_TURBO4_0, turbo4_0, FA_SCALAR, ) } else { CREATE_FA(GGML_TYPE_F32, f32, FA_SCALAR, _fp32) CREATE_FA(GGML_TYPE_F16, f16, FA_SCALAR, _fp32) @@ -3559,7 +3561,9 @@ static void ggml_vk_load_shaders(vk_device& device) { CREATE_FA(GGML_TYPE_Q5_1, q5_1, FA_SCALAR, _fp32) CREATE_FA(GGML_TYPE_IQ4_NL, iq4_nl, FA_SCALAR, _fp32) } + CREATE_FA(GGML_TYPE_TURBO2_0, turbo2_0, FA_SCALAR, _fp32) CREATE_FA(GGML_TYPE_TURBO3_0, turbo3_0, FA_SCALAR, _fp32) + CREATE_FA(GGML_TYPE_TURBO4_0, turbo4_0, FA_SCALAR, _fp32) } #if defined(VK_KHR_cooperative_matrix) && defined(GGML_VULKAN_COOPMAT_GLSLC_SUPPORT) if (device->coopmat1_fa_support) { @@ -3571,7 +3575,9 @@ static void ggml_vk_load_shaders(vk_device& device) { CREATE_FA(GGML_TYPE_Q5_0, q5_0, FA_COOPMAT1, _cm1) CREATE_FA(GGML_TYPE_Q5_1, q5_1, FA_COOPMAT1, _cm1) CREATE_FA(GGML_TYPE_IQ4_NL, iq4_nl, FA_COOPMAT1, _cm1) + CREATE_FA(GGML_TYPE_TURBO2_0, turbo2_0, FA_COOPMAT1, _cm1) CREATE_FA(GGML_TYPE_TURBO3_0, turbo3_0, FA_COOPMAT1, _cm1) + CREATE_FA(GGML_TYPE_TURBO4_0, turbo4_0, FA_COOPMAT1, _cm1) } #endif #if defined(VK_NV_cooperative_matrix2) && defined(GGML_VULKAN_COOPMAT2_GLSLC_SUPPORT) @@ -3584,7 +3590,9 @@ static void ggml_vk_load_shaders(vk_device& device) { CREATE_FA(GGML_TYPE_Q5_1, q5_1, FA_COOPMAT2, _cm2) CREATE_FA(GGML_TYPE_Q8_0, q8_0, FA_COOPMAT2, _cm2) CREATE_FA(GGML_TYPE_IQ4_NL, iq4_nl, FA_COOPMAT2, _cm2) + CREATE_FA(GGML_TYPE_TURBO2_0, turbo2_0, FA_COOPMAT2, _cm2) CREATE_FA(GGML_TYPE_TURBO3_0, turbo3_0, FA_COOPMAT2, _cm2) + CREATE_FA(GGML_TYPE_TURBO4_0, turbo4_0, FA_COOPMAT2, _cm2) } #endif #undef CREATE_FA @@ -4360,7 +4368,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_IQ4_NL], "dequant_iq4_nl", dequant_iq4_nl_len, dequant_iq4_nl_data, "main", 2, 5 * sizeof(uint32_t), {256 * 16, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_MXFP4], "dequant_mxfp4", dequant_mxfp4_len, dequant_mxfp4_data, "main", 2, 5 * sizeof(uint32_t), {256 * 16, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_NVFP4], "dequant_nvfp4", dequant_nvfp4_len, dequant_nvfp4_data, "main", 2, 5 * sizeof(uint32_t), {256 * 16, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_TURBO2_0], "dequant_turbo2_0", dequant_turbo2_0_len, dequant_turbo2_0_data, "main", 2, 5 * sizeof(uint32_t), {128, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_TURBO3_0], "dequant_turbo3_0", dequant_turbo3_0_len, dequant_turbo3_0_data, "main", 2, 5 * sizeof(uint32_t), {128, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_TURBO4_0], "dequant_turbo4_0", dequant_turbo4_0_len, dequant_turbo4_0_data, "main", 2, 5 * sizeof(uint32_t), {128, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_TQ3_1S], "dequant_tq3_1s", dequant_tq3_1s_len, dequant_tq3_1s_data, "main", 2, 5 * sizeof(uint32_t), {256 * 32, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_dequant[GGML_TYPE_TQ4_1S], "dequant_tq4_1s", dequant_tq4_1s_len, dequant_tq4_1s_data, "main", 2, 5 * sizeof(uint32_t), {256 * 32, 1, 1}, {}, 1); // TurboQuant WHT @@ -4392,7 +4403,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_IQ4_NL], "get_rows_iq4_nl", get_rows_iq4_nl_len, get_rows_iq4_nl_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_MXFP4], "get_rows_mxfp4", get_rows_mxfp4_len, get_rows_mxfp4_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_NVFP4], "get_rows_nvfp4", get_rows_nvfp4_len, get_rows_nvfp4_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_TURBO2_0], "get_rows_turbo2_0", get_rows_turbo2_0_len, get_rows_turbo2_0_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_TURBO3_0], "get_rows_turbo3_0", get_rows_turbo3_0_len, get_rows_turbo3_0_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_TURBO4_0], "get_rows_turbo4_0", get_rows_turbo4_0_len, get_rows_turbo4_0_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_TQ3_1S], "get_rows_tq3_1s", get_rows_tq3_1s_len, get_rows_tq3_1s_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows[GGML_TYPE_I32], "get_rows_i32", get_rows_i32_len, get_rows_i32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_F32 ], "get_rows_f32_f32", get_rows_f32_f32_len, get_rows_f32_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), { 512, 1, 1}, {}, 1); @@ -4420,7 +4434,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_IQ4_NL], "get_rows_iq4_nl_f32", get_rows_iq4_nl_f32_len, get_rows_iq4_nl_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_MXFP4], "get_rows_mxfp4_f32", get_rows_mxfp4_f32_len, get_rows_mxfp4_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_NVFP4], "get_rows_nvfp4_f32", get_rows_nvfp4_f32_len, get_rows_nvfp4_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_TURBO2_0], "get_rows_turbo2_0_f32", get_rows_turbo2_0_f32_len, get_rows_turbo2_0_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_TURBO3_0], "get_rows_turbo3_0_f32", get_rows_turbo3_0_f32_len, get_rows_turbo3_0_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_TURBO4_0], "get_rows_turbo4_0_f32", get_rows_turbo4_0_f32_len, get_rows_turbo4_0_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_get_rows_f32[GGML_TYPE_TQ3_1S], "get_rows_tq3_1s_f32", get_rows_tq3_1s_f32_len, get_rows_tq3_1s_f32_data, "main", 3, sizeof(vk_op_binary_push_constants), {1024, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_matmul_split_k_reduce, "split_k_reduce", split_k_reduce_len, split_k_reduce_data, "main", 2, 2 * sizeof(uint32_t), {256 * 4, 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_flash_attn_split_k_reduce, "fa_split_k_reduce", fa_split_k_reduce_len, fa_split_k_reduce_data, "main", 3, sizeof(vk_op_flash_attn_split_k_reduce_push_constants), {1, device->subgroup_size, 1}, {device->subgroup_size}, 1, true); @@ -4502,7 +4519,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_Q5_1], "set_rows_q5_1" #itype, set_rows_q5_1 ## itype ## _len, set_rows_q5_1 ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_Q8_0], "set_rows_q8_0" #itype, set_rows_q8_0 ## itype ## _len, set_rows_q8_0 ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_IQ4_NL], "set_rows_iq4_nl" #itype, set_rows_iq4_nl ## itype ## _len, set_rows_iq4_nl ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ + ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_TURBO2_0], "set_rows_turbo2_0" #itype, set_rows_turbo2_0 ## itype ## _len, set_rows_turbo2_0 ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_TURBO3_0], "set_rows_turbo3_0" #itype, set_rows_turbo3_0 ## itype ## _len, set_rows_turbo3_0 ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ + ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_TURBO4_0], "set_rows_turbo4_0" #itype, set_rows_turbo4_0 ## itype ## _len, set_rows_turbo4_0 ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ + ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_TQ3_1S], "set_rows_tq3_1s" #itype, set_rows_tq3_1s ## itype ## _len, set_rows_tq3_1s ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); \ ggml_vk_create_pipeline(device, device->pipeline_set_rows ## itype [GGML_TYPE_TQ4_1S], "set_rows_tq4_1s" #itype, set_rows_tq4_1s ## itype ## _len, set_rows_tq4_1s ## itype ## _data, "main", 3, sizeof(vk_op_binary_push_constants), {1, 1, 1}, {1}, 1, true); SET_ROWS(_i32) @@ -4517,7 +4537,10 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_Q5_1], "cpy_q5_1_f32", cpy_q5_1_f32_len, cpy_q5_1_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_Q5_1), 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_Q8_0], "cpy_q8_0_f32", cpy_q8_0_f32_len, cpy_q8_0_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_Q8_0), 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_IQ4_NL], "cpy_iq4_nl_f32", cpy_iq4_nl_f32_len, cpy_iq4_nl_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_IQ4_NL), 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_TURBO2_0], "cpy_turbo2_0_f32", cpy_turbo2_0_f32_len, cpy_turbo2_0_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_TURBO2_0), 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_TURBO3_0], "cpy_turbo3_0_f32", cpy_turbo3_0_f32_len, cpy_turbo3_0_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_TURBO3_0), 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_TURBO4_0], "cpy_turbo4_0_f32", cpy_turbo4_0_f32_len, cpy_turbo4_0_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_TURBO4_0), 1, 1}, {}, 1); + ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_TQ3_1S], "cpy_tq3_1s_f32", cpy_tq3_1s_f32_len, cpy_tq3_1s_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_TQ3_1S), 1, 1}, {}, 1); ggml_vk_create_pipeline(device, device->pipeline_cpy_quant_f32[GGML_TYPE_TQ4_1S], "cpy_tq4_1s_f32", cpy_tq4_1s_f32_len, cpy_tq4_1s_f32_data, "main", 2, sizeof(vk_op_unary_push_constants), {(uint32_t)ggml_blck_size(GGML_TYPE_TQ4_1S), 1, 1}, {}, 1); auto get_suffix = [](bool src0_f16, bool src1_f16, bool dst_f16) { @@ -7432,7 +7455,10 @@ static vk_pipeline ggml_vk_get_cpy_pipeline(ggml_backend_vk_context * ctx, const case GGML_TYPE_Q5_1: case GGML_TYPE_Q8_0: case GGML_TYPE_IQ4_NL: + case GGML_TYPE_TURBO2_0: case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: + case GGML_TYPE_TQ3_1S: case GGML_TYPE_TQ4_1S: return ctx->device->pipeline_cpy_quant_f32[src->type]; default: @@ -10258,9 +10284,9 @@ static void ggml_vk_op_f32(ggml_backend_vk_context * ctx, vk_context& subctx, co case GGML_OP_SET_ROWS: { uint32_t ne = ggml_nelements(src0); - if (dst->type == GGML_TYPE_TURBO3_0) { + if (dst->type == GGML_TYPE_TURBO2_0 || dst->type == GGML_TYPE_TURBO3_0 || dst->type == GGML_TYPE_TURBO4_0) { ne = ne / 128; - } else if (dst->type == GGML_TYPE_TQ4_1S) { + } else if (dst->type == GGML_TYPE_TQ3_1S || dst->type == GGML_TYPE_TQ4_1S) { ne = ne / 32; } else if (ggml_is_quantized(dst->type)) { // quants run 32 threads each doing QUANT_K elements @@ -15572,7 +15598,9 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm case GGML_TYPE_F32: case GGML_TYPE_Q4_0: case GGML_TYPE_Q8_0: + case GGML_TYPE_TURBO2_0: case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: // supported in scalar and coopmat2 paths break; case GGML_TYPE_Q4_1: @@ -15633,7 +15661,10 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm case GGML_TYPE_IQ4_NL: case GGML_TYPE_MXFP4: case GGML_TYPE_NVFP4: + case GGML_TYPE_TURBO2_0: case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: + case GGML_TYPE_TQ3_1S: case GGML_TYPE_I32: return true; default: @@ -15653,7 +15684,10 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm case GGML_TYPE_Q5_1: case GGML_TYPE_Q8_0: case GGML_TYPE_IQ4_NL: + case GGML_TYPE_TURBO2_0: case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: + case GGML_TYPE_TQ3_1S: case GGML_TYPE_TQ4_1S: return true; default: @@ -15694,7 +15728,10 @@ static bool ggml_backend_vk_device_supports_op(ggml_backend_dev_t dev, const ggm case GGML_TYPE_Q5_1: case GGML_TYPE_Q8_0: case GGML_TYPE_IQ4_NL: + case GGML_TYPE_TURBO2_0: case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: + case GGML_TYPE_TQ3_1S: case GGML_TYPE_TQ4_1S: return true; default: diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp b/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp index 812401ee6e3c..cd4e76a37379 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/copy_from_quant.comp @@ -31,7 +31,36 @@ void main() { const uint a_offset = 0; const uint ib = src_idx; -#if defined(DATA_A_TQ4_1S) +#if defined(DATA_A_TQ3_1S) + const float tq3_signs[32] = float[32]( + +1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0, + -1.0, +1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0 + ); + const float TQ3_INV_SQRT32 = 0.17677669529663688; + + float buf[32]; + for (int j = 0; j < 32; j += 2) { + vec2 v = dequantize(ib, j, a_offset); + buf[j] = v.x; + buf[j+1] = v.y; + } + + for (uint step = 1u; step < 32u; step <<= 1u) { + for (uint i = 0u; i < 32u; i += step * 2u) { + for (uint j2 = i; j2 < i + step; j2++) { + float a2 = buf[j2], b2 = buf[j2 + step]; + buf[j2] = a2 + b2; + buf[j2 + step] = a2 - b2; + } + } + } + + for (int j = 0; j < 32; j++) { + data_d[dst_idx + j] = buf[j] * TQ3_INV_SQRT32 * tq3_signs[j]; + } +#elif defined(DATA_A_TQ4_1S) // TQ4_1S requires full inverse WHT after centroid*scale dequant. // Dequant all 32 elements into a buffer, apply butterfly, then write. const float tq4_signs[32] = float[32]( diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp b/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp index f734c75c4a9a..6c9c6bccf675 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp @@ -214,7 +214,7 @@ void quantize(uint dst_idx, uint src_idx) } #endif -#if defined(DATA_A_TURBO3_0) +#if defined(DATA_A_TURBO3_0) || defined(DATA_A_TURBO2_0) || defined(DATA_A_TURBO4_0) const float TS1[128] = float[128]( -1, 1, 1, -1, -1, 1, -1, 1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1, 1, -1, 1, -1, -1, 1, 1, 1, -1, 1, 1, -1, -1, -1, @@ -239,6 +239,9 @@ const float TS2[128] = float[128]( const float TINV = 0.08838834764831845; // 1 / sqrt(128) +// TurboQuant 2-bit centroids +const float T2M[3] = float[3](-0.086728, 0.0, 0.086728); + const float TC[8] = float[8]( -0.190685, -0.117832, -0.065717, -0.021460, 0.021460, 0.065717, 0.117832, 0.190685 @@ -250,43 +253,49 @@ const float TM[7] = float[7]( 0.043589, 0.091775, 0.154259 ); +// TurboQuant 4-bit midpoints +const float T4M[15] = float[15]( + -0.145561, -0.103361, -0.079142, -0.060009, + -0.043430, -0.028293, -0.013964, 0.000000, + 0.013964, 0.028293, 0.043430, 0.060009, + 0.079142, 0.103361, 0.145561 +); + #if defined(SET_ROWS) shared float wht[128]; shared float sg_acc[16]; shared float gnrm; -void quantize_block(uint b, uint o) { - [[unroll]] for (int j = 0; j < 32; ++j) data_q[b].qs[j] = uint8_t(0); - [[unroll]] for (int j = 0; j < 16; ++j) data_q[b].signs[j] = uint8_t(0); - float rs = 0.0; - [[unroll]] for (int j = 0; j < 128; ++j) { - float v = wht[o + j]; - uint i = v < TM[0] ? 0 : v < TM[1] ? 1 : v < TM[2] ? 2 : v < TM[3] ? 3 : - v < TM[4] ? 4 : v < TM[5] ? 5 : v < TM[6] ? 6 : 7; - rs += TC[i] * TC[i]; - uint low2 = i & 0x3; - uint hi1 = (i >> 2) & 0x1; - data_q[b].qs[j / 4] |= uint8_t(low2 << ((j % 4) * 2)); - data_q[b].signs[j / 8] |= uint8_t(hi1 << (j % 8)); - } - float rn = sqrt(rs); - data_q[b].norm = float16_t((rn > 1e-10) ? (gnrm / rn) : gnrm); -} - #endif // defined(SET_ROWS) -#endif // defined(DATA_A_TURBO3_0) +#endif // defined(DATA_A_TURBO3_0) ... -#if defined(DATA_A_TQ4_1S) +#if defined(DATA_A_TQ3_1S) || defined(DATA_A_TQ4_1S) -const float TQ4_SIGNS[32] = float[32]( +const float TQ_SIGNS[32] = float[32]( +1, -1, +1, -1, +1, +1, -1, +1, -1, -1, +1, -1, +1, +1, -1, +1, -1, -1, +1, -1, +1, -1, -1, +1, -1, +1, +1, -1, +1, -1, -1, +1 ); -const float TQ4_INV_SQRT32 = 0.17677669529663688; // 1 / sqrt(32) +const float TQ_INV_SQRT32 = 0.17677669529663688; // 1 / sqrt(32) + +const float TQ3_CENTROIDS[8] = float[8]( + -1.996684, -1.291398, -0.740341, -0.247508, + 0.230106, 0.725222, 1.277503, 1.988943 +); + +uint tq3_choose_index(float val) { + if (val < -1.644041) return 0u; + if (val < -1.015869) return 1u; + if (val < -0.493925) return 2u; + if (val < -0.008701) return 3u; + if (val < 0.477664) return 4u; + if (val < 1.001362) return 5u; + if (val < 1.633223) return 6u; + return 7u; +} const float TQ4_CENTROIDS[16] = float[16]( -2.732590, -2.069017, -1.618046, -1.256231, @@ -315,7 +324,7 @@ uint tq4_choose_index(float val) { return 15u; } -#endif // defined(DATA_A_TQ4_1S) +#endif // defined(DATA_A_TQ4_1S) ... #if defined(DATA_A_IQ4_NL) uint best_index(float x) { @@ -379,7 +388,7 @@ void quantize(uint dst_idx, uint src_idx) } #endif -#if defined(SET_ROWS) && defined(DATA_A_TURBO3_0) +#if defined(SET_ROWS) && (defined(DATA_A_TURBO3_0) || defined(DATA_A_TURBO2_0) || defined(DATA_A_TURBO4_0)) void main() { const uint t = gl_LocalInvocationID.x; const uint g = gl_WorkGroupID.z * 262144 + gl_WorkGroupID.y * 512 + gl_WorkGroupID.x; @@ -398,12 +407,10 @@ void main() { const uint i1 = data_i[src1_idx(i01, fastmod(i02, p.ne11), fastmod(i03, p.ne12), 0) + get_boffset()] DATA_I_SWIZZLE; const uint db = dst_idx(ig, i1, i02, i03) + get_doffset(); - // Step 1: load into shared memory - wht[t] = data_s[sb + t]; - barrier(); + float val = data_s[sb + t]; // Step 2: L2 norm via subgroup reduction - float v2 = wht[t] * wht[t]; + float v2 = val * val; v2 = subgroupAdd(v2); if (gl_SubgroupInvocationID == 0) sg_acc[gl_SubgroupID] = v2; barrier(); @@ -414,31 +421,51 @@ void main() { } barrier(); - // Step 3: normalize, then apply forward WHT: signs1 -> butterfly -> signs2 - wht[t] *= (gnrm > 1e-10) ? (1.0 / gnrm) : 0.0; - barrier(); + // Step 3: normalize, then apply forward WHT + val *= (gnrm > 1e-10) ? (1.0 / gnrm) : 0.0; + val *= TS1[t]; - wht[t] *= TS1[t]; - barrier(); + // Optimized WHT using subgroup shuffle + uint sg_size = gl_SubgroupSize; + for (uint h = 1; h < sg_size && h < 128; h *= 2) { + float other = subgroupShuffleXor(val, h); + val = ((t & h) == 0) ? (val + other) : (other - val); + } - [[unroll]] for (uint h = 1; h < 128; h *= 2) { - if ((t % (2 * h)) < h) { - float a = wht[t]; - float b = wht[t + h]; - wht[t] = a + b; - wht[t + h] = a - b; - } + if (sg_size < 128) { + wht[t] = val; barrier(); + for (uint h = sg_size; h < 128; h *= 2) { + if ((t % (2 * h)) < h) { + float a = wht[t]; + float b = wht[t + h]; + wht[t] = a + b; + wht[t + h] = a - b; + } + barrier(); + } + val = wht[t]; } // Step 5: apply signs2 + scaling - float rv = wht[t] * TINV * TS2[t]; - - // Step 6: quantize -- all 128 threads participate - uint idx = rv < TM[0] ? 0u : rv < TM[1] ? 1u : rv < TM[2] ? 2u : rv < TM[3] ? 3u : - rv < TM[4] ? 4u : rv < TM[5] ? 5u : rv < TM[6] ? 6u : 7u; + val *= TINV * TS2[t]; - // Pack qs: 4 elements per byte via subgroup shuffle + // Step 6: Quantize +#if defined(DATA_A_TURBO2_0) + uint idx = val < T2M[0] ? 0u : val < T2M[1] ? 1u : val < T2M[2] ? 2u : 3u; + uint sg_lane = gl_SubgroupInvocationID; + uint my_2bit = idx & 0x3u; + uint qs_byte = 0u; + [[unroll]] for (uint k = 0; k < 4; k++) { + uint contrib = subgroupShuffle(my_2bit, (sg_lane & ~3u) + k); + qs_byte |= contrib << (k * 2u); + } + if (sg_lane % 4u == 0u) { + data_q[db].qs[t / 4u] = uint8_t(qs_byte); + } +#elif defined(DATA_A_TURBO3_0) + uint idx = val < TM[0] ? 0u : val < TM[1] ? 1u : val < TM[2] ? 2u : val < TM[3] ? 3u : + val < TM[4] ? 4u : val < TM[5] ? 5u : val < TM[6] ? 6u : 7u; uint sg_lane = gl_SubgroupInvocationID; uint my_low2 = idx & 0x3u; uint qs_byte = 0u; @@ -449,18 +476,42 @@ void main() { if (sg_lane % 4u == 0u) { data_q[db].qs[t / 4u] = uint8_t(qs_byte); } - - // Pack signs: 8 elements per byte via subgroup ballot uvec4 ballot = subgroupBallot(((idx >> 2u) & 1u) != 0u); if (sg_lane % 8u == 0u) { uint local_byte = sg_lane / 8u; data_q[db].signs[t / 8u] = uint8_t((ballot.x >> (local_byte * 8u)) & 0xFFu); } +#elif defined(DATA_A_TURBO4_0) + uint idx = 0u; + if (val < T4M[7]) { + if (val < T4M[3]) { + if (val < T4M[1]) idx = (val < T4M[0]) ? 0u : 1u; + else idx = (val < T4M[2]) ? 2u : 3u; + } else { + if (val < T4M[5]) idx = (val < T4M[4]) ? 4u : 5u; + else idx = (val < T4M[6]) ? 6u : 7u; + } + } else { + if (val < T4M[11]) { + if (val < T4M[9]) idx = (val < T4M[8]) ? 8u : 9u; + else idx = (val < T4M[10]) ? 10u : 11u; + } else { + if (val < T4M[13]) idx = (val < T4M[12]) ? 12u : 13u; + else idx = (val < T4M[14]) ? 14u : 15u; + } + } + uint sg_lane = gl_SubgroupInvocationID; + uint partner_idx = subgroupShuffle(idx, sg_lane ^ 1u); + uint byte_val = ((sg_lane & 1u) == 0u) ? (idx | (partner_idx << 4u)) : (partner_idx | (idx << 4u)); + if ((sg_lane & 1u) == 0u) { + data_q[db].qs[t / 2u] = uint8_t(byte_val); + } +#endif - // Step 7: reconstruction norm via subgroup reduction +#if defined(DATA_A_TURBO3_0) float rc = TC[idx] * TC[idx]; rc = subgroupAdd(rc); - if (sg_lane == 0u) sg_acc[gl_SubgroupID] = rc; + if (gl_SubgroupInvocationID == 0) sg_acc[gl_SubgroupID] = rc; barrier(); if (t == 0u) { float total = 0.0; @@ -468,8 +519,13 @@ void main() { float rn = sqrt(total); data_q[db].norm = float16_t((rn > 1e-10) ? (gnrm / rn) : gnrm); } +#else + if (t == 0u) { + data_q[db].norm = float16_t(gnrm); + } +#endif } -#elif defined(SET_ROWS) && defined(DATA_A_TQ4_1S) +#elif defined(SET_ROWS) && (defined(DATA_A_TQ4_1S) || defined(DATA_A_TQ3_1S)) void main() { const uint t = gl_LocalInvocationID.x; // 0..31, one per block element @@ -494,16 +550,16 @@ void main() { // Step 2: Forward RHT via subgroup ops // Sign flip - val *= TQ4_SIGNS[t]; + val *= TQ_SIGNS[t]; // WHT butterfly via subgroupShuffleXor - [[unroll]] for (uint h = 1u; h < 32u; h <<= 1u) { + for (uint h = 1u; h < 32u; h <<= 1u) { const float other = subgroupShuffleXor(val, h); val = ((t & h) == 0u) ? (val + other) : (other - val); } // Normalize - val *= TQ4_INV_SQRT32; + val *= TQ_INV_SQRT32; // Step 3: Dual half-block RMS scale computation float sq = val * val; @@ -512,7 +568,7 @@ void main() { float rms_lo = sqrt(sum_sq_lo / 16.0); float rms_hi = sqrt(sum_sq_hi / 16.0); - // Step 4: Scale search (9 points) — matches CPU quantize_row_tq4_1s_ref + // Step 4: Scale search (9 points) const float SCALES[9] = float[9](0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.35, 1.5); float best_d0 = rms_lo; float best_d1 = rms_hi; @@ -525,8 +581,13 @@ void main() { ? ((d0 > 1e-10) ? 1.0 / d0 : 0.0) : ((d1 > 1e-10) ? 1.0 / d1 : 0.0); +#if defined(DATA_A_TQ3_1S) + uint idx = tq3_choose_index(val * inv); + float c = TQ3_CENTROIDS[idx]; +#else uint idx = tq4_choose_index(val * inv); float c = TQ4_CENTROIDS[idx]; +#endif float d = (t < 16u) ? d0 : d1; float diff2 = val - c * d; float local_err = diff2 * diff2; @@ -540,13 +601,18 @@ void main() { } // Step 5: Iterative refinement (6 iterations) - [[unroll]] for (uint iter = 0u; iter < 6u; iter++) { + for (uint iter = 0u; iter < 6u; iter++) { float inv = (t < 16u) ? ((best_d0 > 1e-10) ? 1.0 / best_d0 : 0.0) : ((best_d1 > 1e-10) ? 1.0 / best_d1 : 0.0); +#if defined(DATA_A_TQ3_1S) + uint idx = tq3_choose_index(val * inv); + float c = TQ3_CENTROIDS[idx]; +#else uint idx = tq4_choose_index(val * inv); float c = TQ4_CENTROIDS[idx]; +#endif float num_lo = subgroupAdd((t < 16u) ? val * c : 0.0); float den_lo = subgroupAdd((t < 16u) ? c * c : 0.0); @@ -561,22 +627,82 @@ void main() { float inv_final = (t < 16u) ? ((best_d0 > 1e-10) ? 1.0 / best_d0 : 0.0) : ((best_d1 > 1e-10) ? 1.0 / best_d1 : 0.0); +#if defined(DATA_A_TQ3_1S) + uint cidx = tq3_choose_index(val * inv_final); +#else uint cidx = tq4_choose_index(val * inv_final); +#endif - // Step 7: Nibble packing — two 4-bit indices per byte - // Even element j: low nibble; odd element j: high nibble - // Thread t pairs with thread t^1 + // Step 7: Packing +#if defined(DATA_A_TQ4_1S) uint partner_idx = subgroupShuffle(cidx, t ^ 1u); - uint byte_val; - if ((t & 1u) == 0u) { - byte_val = cidx | (partner_idx << 4u); - } else { - byte_val = partner_idx | (cidx << 4u); - } - // Only even threads write (one byte per pair) + uint byte_val = ((t & 1u) == 0u) ? (cidx | (partner_idx << 4u)) : (partner_idx | (cidx << 4u)); if ((t & 1u) == 0u) { data_q[db].qs[t >> 1u] = uint8_t(byte_val); } +#else + // TQ3_1S packing: 8 values -> 3 bytes + // Thread 0-7: byte 0, 1, 2 + uint v0 = subgroupShuffle(cidx, 0); + uint v1 = subgroupShuffle(cidx, 1); + uint v2 = subgroupShuffle(cidx, 2); + uint v3 = subgroupShuffle(cidx, 3); + uint v4 = subgroupShuffle(cidx, 4); + uint v5 = subgroupShuffle(cidx, 5); + uint v6 = subgroupShuffle(cidx, 6); + uint v7 = subgroupShuffle(cidx, 7); + + if (t == 0) { + data_q[db].qs[0] = uint8_t(v0 | (v1 << 3) | ((v2 & 3) << 6)); + data_q[db].qs[1] = uint8_t((v2 >> 2) | (v3 << 1) | (v4 << 4) | ((v5 & 1) << 7)); + data_q[db].qs[2] = uint8_t((v5 >> 1) | (v6 << 2) | (v7 << 5)); + } + + v0 = subgroupShuffle(cidx, 8); + v1 = subgroupShuffle(cidx, 9); + v2 = subgroupShuffle(cidx, 10); + v3 = subgroupShuffle(cidx, 11); + v4 = subgroupShuffle(cidx, 12); + v5 = subgroupShuffle(cidx, 13); + v6 = subgroupShuffle(cidx, 14); + v7 = subgroupShuffle(cidx, 15); + + if (t == 0) { + data_q[db].qs[3] = uint8_t(v0 | (v1 << 3) | ((v2 & 3) << 6)); + data_q[db].qs[4] = uint8_t((v2 >> 2) | (v3 << 1) | (v4 << 4) | ((v5 & 1) << 7)); + data_q[db].qs[5] = uint8_t((v5 >> 1) | (v6 << 2) | (v7 << 5)); + } + + v0 = subgroupShuffle(cidx, 16); + v1 = subgroupShuffle(cidx, 17); + v2 = subgroupShuffle(cidx, 18); + v3 = subgroupShuffle(cidx, 19); + v4 = subgroupShuffle(cidx, 20); + v5 = subgroupShuffle(cidx, 21); + v6 = subgroupShuffle(cidx, 22); + v7 = subgroupShuffle(cidx, 23); + + if (t == 0) { + data_q[db].qs[6] = uint8_t(v0 | (v1 << 3) | ((v2 & 3) << 6)); + data_q[db].qs[7] = uint8_t((v2 >> 2) | (v3 << 1) | (v4 << 4) | ((v5 & 1) << 7)); + data_q[db].qs[8] = uint8_t((v5 >> 1) | (v6 << 2) | (v7 << 5)); + } + + v0 = subgroupShuffle(cidx, 24); + v1 = subgroupShuffle(cidx, 25); + v2 = subgroupShuffle(cidx, 26); + v3 = subgroupShuffle(cidx, 27); + v4 = subgroupShuffle(cidx, 28); + v5 = subgroupShuffle(cidx, 29); + v6 = subgroupShuffle(cidx, 30); + v7 = subgroupShuffle(cidx, 31); + + if (t == 0) { + data_q[db].qs[9] = uint8_t(v0 | (v1 << 3) | ((v2 & 3) << 6)); + data_q[db].qs[10] = uint8_t((v2 >> 2) | (v3 << 1) | (v4 << 4) | ((v5 & 1) << 7)); + data_q[db].qs[11] = uint8_t((v5 >> 1) | (v6 << 2) | (v7 << 5)); + } +#endif // Step 8: Store scales (thread 0 writes both) if (t == 0u) { diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.glsl b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.glsl index 845a8bd27ab4..d4facb90c12c 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.glsl +++ b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs.glsl @@ -652,30 +652,71 @@ vec2 get_dm(uint ib, uint a_offset) { } #endif -#if defined(DATA_A_TURBO3_0) +#if defined(DATA_A_TQ3_1S) vec2 dequantize(uint ib, uint iqs, uint a_offset) { - // PolarQuant 3-bit centroids (Lloyd-Max for Gaussian) const float centroids[8] = float[8]( - -0.190685, -0.117832, -0.065717, -0.021460, - 0.021460, 0.065717, 0.117832, 0.190685 + -1.996684, -1.291398, -0.740341, -0.247508, + 0.230106, 0.725222, 1.277503, 1.988943 ); + const uint group = iqs / 8u; + const uint i8 = iqs % 8u; + const uint b0 = uint(data_a[a_offset + ib].qs[group * 3 + 0]); + const uint b1 = uint(data_a[a_offset + ib].qs[group * 3 + 1]); + const uint b2 = uint(data_a[a_offset + ib].qs[group * 3 + 2]); + uint idx0, idx1; + switch(i8) { + case 0: idx0 = b0 & 7u; idx1 = (b0 >> 3u) & 7u; break; + case 2: idx0 = ((b0 >> 6u) | (b1 << 2u)) & 7u; idx1 = (b1 >> 1u) & 7u; break; + case 4: idx0 = (b1 >> 4u) & 7u; idx1 = ((b1 >> 7u) | (b2 << 1u)) & 7u; break; + case 6: idx0 = (b2 >> 2u) & 7u; idx1 = (b2 >> 5u) & 7u; break; + } + const float d0 = (iqs < 16) ? float(data_a[a_offset + ib].d0) : float(data_a[a_offset + ib].d1); + const float d1 = ((iqs+1) < 16) ? float(data_a[a_offset + ib].d0) : float(data_a[a_offset + ib].d1); + return vec2(centroids[idx0] * d0, centroids[idx1] * d1); +} +vec4 dequantize4(uint ib, uint iqs, uint a_offset) { + vec2 v0 = dequantize(ib, iqs, a_offset); + vec2 v1 = dequantize(ib, iqs + 2, a_offset); + return vec4(v0.x, v0.y, v1.x, v1.y); +} +vec2 get_dm(uint ib, uint a_offset) { + return vec2(1, 0); +} +#endif - // iqs is the element index within the block (0..31), we decode 2 consecutive elements +#if defined(DATA_A_TQ4_1S) +vec2 dequantize(uint ib, uint iqs, uint a_offset) { + const float centroids[16] = float[16]( + -2.732590, -2.069017, -1.618046, -1.256231, + -0.942340, -0.656759, -0.388048, -0.128395, + 0.128395, 0.388048, 0.656759, 0.942340, + 1.256231, 1.618046, 2.069017, 2.732590 + ); const uint j0 = iqs; const uint j1 = iqs + 1; + const uint idx0 = (uint(data_a[a_offset + ib].qs[j0 / 2]) >> ((j0 % 2) * 4)) & 0xF; + const uint idx1 = (uint(data_a[a_offset + ib].qs[j1 / 2]) >> ((j1 % 2) * 4)) & 0xF; + const float d0 = (j0 < 16) ? float(data_a[a_offset + ib].d0) : float(data_a[a_offset + ib].d1); + const float d1 = (j1 < 16) ? float(data_a[a_offset + ib].d0) : float(data_a[a_offset + ib].d1); + return vec2(centroids[idx0] * d0, centroids[idx1] * d1); +} +vec4 dequantize4(uint ib, uint iqs, uint a_offset) { + vec2 v0 = dequantize(ib, iqs, a_offset); + vec2 v1 = dequantize(ib, iqs + 2, a_offset); + return vec4(v0.x, v0.y, v1.x, v1.y); +} +vec2 get_dm(uint ib, uint a_offset) { + return vec2(1, 0); +} +#endif - // Extract 2-bit low indices from qs (4 per byte) - const uint low2_0 = (uint(data_a[a_offset + ib].qs[j0 / 4]) >> ((j0 % 4) * 2)) & 0x3; - const uint low2_1 = (uint(data_a[a_offset + ib].qs[j1 / 4]) >> ((j1 % 4) * 2)) & 0x3; - - // Extract 1-bit high from signs (8 per byte) - const uint hi1_0 = (uint(data_a[a_offset + ib].signs[j0 / 8]) >> (j0 % 8)) & 0x1; - const uint hi1_1 = (uint(data_a[a_offset + ib].signs[j1 / 8]) >> (j1 % 8)) & 0x1; - - // Combine to 3-bit index - const uint idx0 = low2_0 | (hi1_0 << 2); - const uint idx1 = low2_1 | (hi1_1 << 2); - +#if defined(DATA_A_TURBO2_0) +vec2 dequantize(uint ib, uint iqs, uint a_offset) { + const float centroids[4] = float[4](-0.133462, -0.039994, 0.039994, 0.133462); + const uint j0 = iqs; + const uint j1 = iqs + 1; + const uint idx0 = (uint(data_a[a_offset + ib].qs[j0 / 4]) >> ((j0 % 4) * 2)) & 0x3; + const uint idx1 = (uint(data_a[a_offset + ib].qs[j1 / 4]) >> ((j1 % 4) * 2)) & 0x3; return vec2(centroids[idx0], centroids[idx1]); } vec4 dequantize4(uint ib, uint iqs, uint a_offset) { @@ -688,33 +729,55 @@ vec2 get_dm(uint ib, uint a_offset) { } #endif -#if defined(DATA_A_TQ4_1S) +#if defined(DATA_A_TURBO4_0) vec2 dequantize(uint ib, uint iqs, uint a_offset) { - // TQ4_1S: 16-level Lloyd-Max centroids for N(0,1) const float centroids[16] = float[16]( - -2.732590, -2.069017, -1.618046, -1.256231, - -0.942340, -0.656759, -0.388048, -0.128395, - 0.128395, 0.388048, 0.656759, 0.942340, - 1.256231, 1.618046, 2.069017, 2.732590 + -0.173926, -0.117195, -0.089527, -0.068756, + -0.051262, -0.035597, -0.020989, -0.006938, + 0.006938, 0.020989, 0.035597, 0.051262, + 0.068756, 0.089527, 0.117195, 0.173926 + ); + const uint j0 = iqs; + const uint j1 = iqs + 1; + const uint idx0 = (uint(data_a[a_offset + ib].qs[j0 / 2]) >> ((j0 % 2) * 4)) & 0xF; + const uint idx1 = (uint(data_a[a_offset + ib].qs[j1 / 2]) >> ((j1 % 2) * 4)) & 0xF; + return vec2(centroids[idx0], centroids[idx1]); +} +vec4 dequantize4(uint ib, uint iqs, uint a_offset) { + vec2 v0 = dequantize(ib, iqs, a_offset); + vec2 v1 = dequantize(ib, iqs + 2, a_offset); + return vec4(v0.x, v0.y, v1.x, v1.y); +} +vec2 get_dm(uint ib, uint a_offset) { + return vec2(float(data_a[a_offset + ib].norm), 0); +} +#endif + +#if defined(DATA_A_TURBO3_0) +vec2 dequantize(uint ib, uint iqs, uint a_offset) { + // PolarQuant 3-bit centroids (Lloyd-Max for Gaussian) + const float centroids[8] = float[8]( + -0.190685, -0.117832, -0.065717, -0.021460, + 0.021460, 0.065717, 0.117832, 0.190685 ); - // iqs is the element pair index within the block (0..15) + // iqs is the element index within the block (0..31), we decode 2 consecutive elements const uint j0 = iqs; const uint j1 = iqs + 1; - // Extract 4-bit nibble indices from qs (2 per byte) - const uint idx0 = (uint(data_a[a_offset + ib].qs[j0 / 2]) >> ((j0 & 1) * 4)) & 0xF; - const uint idx1 = (uint(data_a[a_offset + ib].qs[j1 / 2]) >> ((j1 & 1) * 4)) & 0xF; + // Extract 2-bit low indices from qs (4 per byte) + const uint low2_0 = (uint(data_a[a_offset + ib].qs[j0 / 4]) >> ((j0 % 4) * 2)) & 0x3; + const uint low2_1 = (uint(data_a[a_offset + ib].qs[j1 / 4]) >> ((j1 % 4) * 2)) & 0x3; + + // Extract 1-bit high from signs (8 per byte) + const uint hi1_0 = (uint(data_a[a_offset + ib].signs[j0 / 8]) >> (j0 % 8)) & 0x1; + const uint hi1_1 = (uint(data_a[a_offset + ib].signs[j1 / 8]) >> (j1 % 8)) & 0x1; - // Scale by d0 (elements 0-15) or d1 (elements 16-31) - const float d0 = float(data_a[a_offset + ib].d0); - const float d1 = float(data_a[a_offset + ib].d1); - const float s0 = (j0 < 16) ? d0 : d1; - const float s1 = (j1 < 16) ? d0 : d1; + // Combine to 3-bit index + const uint idx0 = low2_0 | (hi1_0 << 2); + const uint idx1 = low2_1 | (hi1_1 << 2); - // Returns centroid * scale WITHOUT RHT inverse - // (caller must handle pre-rotation for correctness) - return vec2(centroids[idx0] * s0, centroids[idx1] * s1); + return vec2(centroids[idx0], centroids[idx1]); } vec4 dequantize4(uint ib, uint iqs, uint a_offset) { vec2 v0 = dequantize(ib, iqs, a_offset); @@ -722,7 +785,7 @@ vec4 dequantize4(uint ib, uint iqs, uint a_offset) { return vec4(v0.x, v0.y, v1.x, v1.y); } vec2 get_dm(uint ib, uint a_offset) { - // No global scale/min — scales are applied per-element in dequantize() - return vec2(1, 0); + return vec2(float(data_a[a_offset + ib].norm), 0); } #endif + diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.glsl b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.glsl index f2f0e06bf364..0850a1012187 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.glsl +++ b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_funcs_cm2.glsl @@ -715,29 +715,59 @@ float16_t dequantFuncNVFP4(const in decodeBufNVFP4 bl, const in uint blockCoords } #endif +#if defined(DATA_A_TQ3_1S) +layout(buffer_reference, std430, buffer_reference_align = 2) buffer decodeBufTQ3_1S { + block_tq3_1s block; +}; +float16_t dequantFuncTQ3_1S(const in decodeBufTQ3_1S bl, const in uint blockCoords[2], const in uint coordInBlock[2]) { return float16_t(0); } +#endif + +#if defined(DATA_A_TQ4_1S) +layout(buffer_reference, std430, buffer_reference_align = 2) buffer decodeBufTQ4_1S { + block_tq4_1s block; +}; +float16_t dequantFuncTQ4_1S(const in decodeBufTQ4_1S bl, const in uint blockCoords[2], const in uint coordInBlock[2]) { return float16_t(0); } +#endif + +#if defined(DATA_A_TURBO2_0) +layout(buffer_reference, std430, buffer_reference_align = 2) buffer decodeBufTURBO2_0 { + block_turbo2_0 block; +}; +float16_t dequantFuncTURBO2_0(const in decodeBufTURBO2_0 bl, const in uint blockCoords[2], const in uint coordInBlock[2]) +{ + const float centroids[4] = float[4](-0.133462, -0.039994, 0.039994, 0.133462); + const float norm = float(bl.block.norm); + const uint j = coordInBlock[1]; + const uint idx = (uint(bl.block.qs[j / 4]) >> ((j % 4) * 2)) & 0x3; + return float16_t(centroids[idx] * norm); +} +#endif + #if defined(DATA_A_TURBO3_0) layout(buffer_reference, std430, buffer_reference_align = 2) buffer decodeBufTURBO3_0 { block_turbo3_0 block; }; - float16_t dequantFuncTURBO3_0(const in decodeBufTURBO3_0 bl, const in uint blockCoords[2], const in uint coordInBlock[2]) { - const float centroids[8] = float[8]( - -0.190685, -0.117832, -0.065717, -0.021460, - 0.021460, 0.065717, 0.117832, 0.190685 - ); + const float centroids[8] = float[8](-0.190685, -0.117832, -0.065717, -0.021460, 0.021460, 0.065717, 0.117832, 0.190685); const float norm = float(bl.block.norm); const uint j = coordInBlock[1]; - - // Extract 2-bit low index from qs (4 per byte) const uint low2 = (uint(bl.block.qs[j / 4]) >> ((j % 4) * 2)) & 0x3; - - // Extract 1-bit high from signs (8 per byte) const uint hi1 = (uint(bl.block.signs[j / 8]) >> (j % 8)) & 0x1; + return float16_t(centroids[low2 | (hi1 << 2)] * norm); +} +#endif - // Combine to 3-bit index - const uint idx = low2 | (hi1 << 2); - +#if defined(DATA_A_TURBO4_0) +layout(buffer_reference, std430, buffer_reference_align = 2) buffer decodeBufTURBO4_0 { + block_turbo4_0 block; +}; +float16_t dequantFuncTURBO4_0(const in decodeBufTURBO4_0 bl, const in uint blockCoords[2], const in uint coordInBlock[2]) +{ + const float centroids[16] = float[16](-0.173926, -0.117195, -0.089527, -0.068756, -0.051262, -0.035597, -0.020989, -0.006938, 0.006938, 0.020989, 0.035597, 0.051262, 0.068756, 0.089527, 0.117195, 0.173926); + const float norm = float(bl.block.norm); + const uint j = coordInBlock[1]; + const uint idx = (uint(bl.block.qs[j / 2]) >> ((j % 2) * 4)) & 0xF; return float16_t(centroids[idx] * norm); } #endif @@ -790,8 +820,16 @@ float16_t dequantFuncTURBO3_0(const in decodeBufTURBO3_0 bl, const in uint block #define dequantFuncA dequantFuncMXFP4 #elif defined(DATA_A_NVFP4) #define dequantFuncA dequantFuncNVFP4 +#elif defined(DATA_A_TQ3_1S) +#define dequantFuncA dequantFuncTQ3_1S +#elif defined(DATA_A_TQ4_1S) +#define dequantFuncA dequantFuncTQ4_1S +#elif defined(DATA_A_TURBO2_0) +#define dequantFuncA dequantFuncTURBO2_0 #elif defined(DATA_A_TURBO3_0) #define dequantFuncA dequantFuncTURBO3_0 +#elif defined(DATA_A_TURBO4_0) +#define dequantFuncA dequantFuncTURBO4_0 #elif defined(DATA_A_F32) #define dequantFuncA dequantFuncF32 #endif diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_tq3_1s.comp b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_tq3_1s.comp new file mode 100644 index 000000000000..d836de1d4e24 --- /dev/null +++ b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_tq3_1s.comp @@ -0,0 +1,66 @@ +#version 450 + +#include "dequant_head.glsl" + +layout(local_size_x = 256, local_size_y = 1, local_size_z = 1) in; + +layout (binding = 0) readonly buffer A {block_tq3_1s data_a[];}; +layout (binding = 1) writeonly buffer D {D_TYPE data_b[];}; + +void main() { + const float centroids[8] = float[8]( + -1.996684, -1.291398, -0.740341, -0.247508, + 0.230106, 0.725222, 1.277503, 1.988943 + ); + + const float signs[32] = float[32]( + +1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0, + -1.0, +1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0 + ); + + const float INV_SQRT32 = 0.17677669529663688; + + const uint ib = gl_WorkGroupID.x * gl_WorkGroupSize.x + gl_LocalInvocationID.x; + if (ib >= p.nel / 32) return; + + const float d0 = float(data_a[ib].d0); + const float d1 = float(data_a[ib].d1); + + float buf[32]; + for (int group = 0; group < 4; group++) { + const uint b0 = uint(data_a[ib].qs[group * 3 + 0]); + const uint b1 = uint(data_a[ib].qs[group * 3 + 1]); + const uint b2 = uint(data_a[ib].qs[group * 3 + 2]); + + buf[group * 8 + 0] = centroids[b0 & 7u]; + buf[group * 8 + 1] = centroids[(b0 >> 3u) & 7u]; + buf[group * 8 + 2] = centroids[((b0 >> 6u) | (b1 << 2u)) & 7u]; + buf[group * 8 + 3] = centroids[(b1 >> 1u) & 7u]; + buf[group * 8 + 4] = centroids[(b1 >> 4u) & 7u]; + buf[group * 8 + 5] = centroids[((b1 >> 7u) | (b2 << 1u)) & 7u]; + buf[group * 8 + 6] = centroids[(b2 >> 2u) & 7u]; + buf[group * 8 + 7] = centroids[(b2 >> 5u) & 7u]; + } + + for (int j = 0; j < 32; j++) { + buf[j] *= (j < 16) ? d0 : d1; + } + + for (uint step = 1u; step < 32u; step <<= 1u) { + for (uint i = 0u; i < 32u; i += step * 2u) { + for (uint j = i; j < i + step; j++) { + const float a = buf[j]; + const float b = buf[j + step]; + buf[j] = a + b; + buf[j + step] = a - b; + } + } + } + + const uint out_base = ib * 32u; + for (int j = 0; j < 32; j++) { + data_b[out_base + uint(j)] = D_TYPE(buf[j] * INV_SQRT32 * signs[j]); + } +} diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo2_0.comp b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo2_0.comp new file mode 100644 index 000000000000..e2c8fad542ae --- /dev/null +++ b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo2_0.comp @@ -0,0 +1,23 @@ +#version 450 + +#include "dequant_head.glsl" + +// 128 elements per block (QK_TURBO2 = 128) +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout (binding = 0) readonly buffer A {block_turbo2_0 data_a[];}; +layout (binding = 1) writeonly buffer D {D_TYPE data_b[];}; + +void main() { + const float centroids[4] = float[4](-0.133462, -0.039994, 0.039994, 0.133462); + + const uint ib = gl_WorkGroupID.x; + const uint j = gl_LocalInvocationID.x; + + if (ib >= p.nel / 128) return; + + const float norm = float(data_a[ib].norm); + const uint idx = (uint(data_a[ib].qs[j / 4]) >> ((j % 4) * 2)) & 0x3; + + data_b[ib * 128 + j] = D_TYPE(centroids[idx] * norm); +} diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo4_0.comp b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo4_0.comp new file mode 100644 index 000000000000..532eb03c3020 --- /dev/null +++ b/ggml/src/ggml-vulkan/vulkan-shaders/dequant_turbo4_0.comp @@ -0,0 +1,28 @@ +#version 450 + +#include "dequant_head.glsl" + +// 128 elements per block (QK_TURBO4 = 128) +layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; + +layout (binding = 0) readonly buffer A {block_turbo4_0 data_a[];}; +layout (binding = 1) writeonly buffer D {D_TYPE data_b[];}; + +void main() { + const float centroids[16] = float[16]( + -0.173926, -0.117195, -0.089527, -0.068756, + -0.051262, -0.035597, -0.020989, -0.006938, + 0.006938, 0.020989, 0.035597, 0.051262, + 0.068756, 0.089527, 0.117195, 0.173926 + ); + + const uint ib = gl_WorkGroupID.x; + const uint j = gl_LocalInvocationID.x; + + if (ib >= p.nel / 128) return; + + const float norm = float(data_a[ib].norm); + const uint idx = (uint(data_a[ib].qs[j / 2]) >> ((j % 2) * 4)) & 0xF; + + data_b[ib * 128 + j] = D_TYPE(centroids[idx] * norm); +} diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl index 1878eb7e1aa8..6c5f4be59a9b 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl +++ b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl @@ -84,9 +84,15 @@ layout (binding = 6) readonly buffer MO {uint32_t data_mask_opt[];}; #if defined(DATA_A_F32) layout (binding = 1) readonly buffer K_PACKED {vec4 k_data_packed[];} k_packed; layout (binding = 2) readonly buffer V_PACKED {vec4 v_data_packed[];} v_packed; +#elif defined(DATA_A_TURBO2_0) +layout (binding = 1) readonly buffer K_T2 {block_turbo2_0 data_k_t2[];}; +layout (binding = 2) readonly buffer V_T2 {block_turbo2_0 data_v_t2[];}; #elif defined(DATA_A_TURBO3_0) layout (binding = 1) readonly buffer K_T3 {block_turbo3_0 data_k_t3[];}; layout (binding = 2) readonly buffer V_T3 {block_turbo3_0 data_v_t3[];}; +#elif defined(DATA_A_TURBO4_0) +layout (binding = 1) readonly buffer K_T4 {block_turbo4_0 data_k_t4[];}; +layout (binding = 2) readonly buffer V_T4 {block_turbo4_0 data_v_t4[];}; #elif defined(A_TYPE_PACKED16) layout (binding = 1) readonly buffer K_PACKED16 {A_TYPE_PACKED16 k_data_packed16[];} k_packed; layout (binding = 2) readonly buffer V_PACKED16 {A_TYPE_PACKED16 v_data_packed16[];} v_packed; @@ -102,8 +108,12 @@ layout (binding = 2) readonly buffer V_PACKED32 {A_TYPE_PACKED32 v_data_packed32 #endif // turbo3: define BLOCK_BYTE_SIZE early (before first use in FA offset computation) -#if defined(DATA_A_TURBO3_0) && !defined(BLOCK_BYTE_SIZE) +#if defined(DATA_A_TURBO2_0) && !defined(BLOCK_BYTE_SIZE) +#define BLOCK_BYTE_SIZE 34 +#elif defined(DATA_A_TURBO3_0) && !defined(BLOCK_BYTE_SIZE) #define BLOCK_BYTE_SIZE 50 // block_turbo3_0: 2 (norm) + 32 (qs) + 16 (signs) = 50 bytes +#elif defined(DATA_A_TURBO4_0) && !defined(BLOCK_BYTE_SIZE) +#define BLOCK_BYTE_SIZE 68 #endif #if defined(DATA_A_F32) @@ -260,6 +270,28 @@ FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { } #endif +#if defined(DATA_A_TURBO2_0) +const float T2C[4] = float[4](-0.133462, -0.039994, 0.039994, 0.133462); +FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { + FLOAT_TYPEV4 r; + for (int k = 0; k < 4; k++) { + uint j = iqs + uint(k); + float nm; + uint qb; + if (binding_idx == BINDING_IDX_K) { + nm = float(data_k_t2[a_offset + ib].norm); + qb = uint(data_k_t2[a_offset + ib].qs[j / 4]); + } else { + nm = float(data_v_t2[a_offset + ib].norm); + qb = uint(data_v_t2[a_offset + ib].qs[j / 4]); + } + uint idx = (qb >> ((j % 4) * 2)) & 0x3; + r[k] = FLOAT_TYPE(T2C[idx] * nm); + } + return r; +} +#endif + #if defined(DATA_A_TURBO3_0) const float T3C[8] = float[8]( -0.190685, -0.117832, -0.065717, -0.021460, @@ -289,6 +321,33 @@ FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { } #endif +#if defined(DATA_A_TURBO4_0) +const float T4C[16] = float[16]( + -0.173926, -0.117195, -0.089527, -0.068756, + -0.051262, -0.035597, -0.020989, -0.006938, + 0.006938, 0.020989, 0.035597, 0.051262, + 0.068756, 0.089527, 0.117195, 0.173926 +); +FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { + FLOAT_TYPEV4 r; + for (int k = 0; k < 4; k++) { + uint j = iqs + uint(k); + float nm; + uint qb; + if (binding_idx == BINDING_IDX_K) { + nm = float(data_k_t4[a_offset + ib].norm); + qb = uint(data_k_t4[a_offset + ib].qs[j / 2]); + } else { + nm = float(data_v_t4[a_offset + ib].norm); + qb = uint(data_v_t4[a_offset + ib].qs[j / 2]); + } + uint idx = (qb >> ((j % 2) * 4)) & 0xF; + r[k] = FLOAT_TYPE(T4C[idx] * nm); + } + return r; +} +#endif + #define CEIL_DIV(a, b) (((a) + (b) - 1) / (b)) diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_tq3_1s.comp b/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_tq3_1s.comp new file mode 100644 index 000000000000..897484d7dd6b --- /dev/null +++ b/ggml/src/ggml-vulkan/vulkan-shaders/mul_mat_vec_tq3_1s.comp @@ -0,0 +1,120 @@ +#version 450 + +#extension GL_EXT_shader_explicit_arithmetic_types_int32 : require + +#include "mul_mat_vec_base.glsl" + +layout(local_size_x_id = 0, local_size_y = 1, local_size_z = 1) in; + +// Lloyd-Max centroids for TQ3_1S (3-bit, 8 levels) — N(0, 1) optimal +const float TQ3_CENTROIDS[8] = float[8]( + -1.996684, -1.291398, -0.740341, -0.247508, + 0.230106, 0.725222, 1.277503, 1.988943 +); + +// WHT sign pattern for 32-element blocks (shared by TQ3 and TQ4) +const float TQ_SIGNS[32] = float[32]( + +1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, +1.0, -1.0, +1.0, + -1.0, -1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0, + -1.0, +1.0, +1.0, -1.0, +1.0, -1.0, -1.0, +1.0 +); + +const float TQ_INV_SQRT32 = 0.17677669529663688; + +shared float tq3_smem[8 * 32]; + +void compute_outputs(const uint32_t first_row, const uint32_t num_rows) { + const uint tid = gl_LocalInvocationID.x; + + uint a_offset, b_offset, d_offset; + get_offsets(a_offset, b_offset, d_offset); + + FLOAT_TYPE temp[NUM_COLS][NUM_ROWS]; + [[unroll]] for (uint j = 0; j < NUM_COLS; ++j) { + [[unroll]] for (uint n = 0; n < NUM_ROWS; ++n) { + temp[j][n] = FLOAT_TYPE(0); + } + } + + const uint num_blocks_per_row = p.ncols / 32u; + const float sign_tid = TQ_SIGNS[tid]; + + for (uint blk = 0; blk < num_blocks_per_row; blk++) { + // --- Stage 1: load activation, sign-flip, write to shared memory --- + [[unroll]] for (uint c = 0; c < NUM_COLS; ++c) { + const uint b_base = c * p.batch_stride_b + b_offset + blk * 32u; + tq3_smem[c * 32u + tid] = float(data_b[b_base + tid]) * sign_tid; + } + barrier(); + + // --- Stage 2: forward WHT butterfly in shared memory (5 stages) --- + [[unroll]] for (uint step = 1u; step < 32u; step <<= 1u) { + if ((tid & step) == 0u) { + const uint partner = tid + step; + [[unroll]] for (uint c = 0; c < NUM_COLS; ++c) { + const uint base = c * 32u; + const float a = tq3_smem[base + tid]; + const float b = tq3_smem[base + partner]; + tq3_smem[base + tid] = a + b; + tq3_smem[base + partner] = a - b; + } + } + barrier(); + } + + // --- Stage 3: dequant all rows' weights for this block position --- + float w_vals[NUM_ROWS]; + [[unroll]] for (uint n = 0; n < num_rows; ++n) { + const uint ib = (first_row + n) * num_blocks_per_row + blk; + const uint group = tid / 8u; + const uint i8 = tid % 8u; + + const uint b0 = uint(data_a[a_offset + ib].qs[group * 3 + 0]); + const uint b1 = uint(data_a[a_offset + ib].qs[group * 3 + 1]); + const uint b2 = uint(data_a[a_offset + ib].qs[group * 3 + 2]); + + uint idx; + switch(i8) { + case 0: idx = b0 & 7u; break; + case 1: idx = (b0 >> 3u) & 7u; break; + case 2: idx = ((b0 >> 6u) | (b1 << 2u)) & 7u; break; + case 3: idx = (b1 >> 1u) & 7u; break; + case 4: idx = (b1 >> 4u) & 7u; break; + case 5: idx = ((b1 >> 7u) | (b2 << 1u)) & 7u; break; + case 6: idx = (b2 >> 2u) & 7u; break; + case 7: idx = (b2 >> 5u) & 7u; break; + } + + const float d = (tid < 16u) + ? float(data_a[a_offset + ib].d0) + : float(data_a[a_offset + ib].d1); + w_vals[n] = TQ3_CENTROIDS[idx] * d * TQ_INV_SQRT32; + } + + // --- Stage 4: accumulate dot products --- + [[unroll]] for (uint c = 0; c < NUM_COLS; ++c) { + const float b_rotated = tq3_smem[c * 32u + tid]; + [[unroll]] for (uint n = 0; n < num_rows; ++n) { + temp[c][n] += FLOAT_TYPE(w_vals[n] * b_rotated); + } + } + + barrier(); + } + + reduce_result(temp, d_offset, first_row, num_rows, tid); +} + +void main() { + const uint first_row = NUM_ROWS * (gl_WorkGroupID.x + gl_NumWorkGroups.x * gl_WorkGroupID.z); + + if (first_row + NUM_ROWS <= p.stride_d) { + compute_outputs(first_row, NUM_ROWS); + } else { + if (first_row >= p.stride_d) { + return; + } + compute_outputs(first_row, p.stride_d - first_row); + } +} diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/turbo_wht.comp b/ggml/src/ggml-vulkan/vulkan-shaders/turbo_wht.comp index 914875eba7aa..1cf87dedfa99 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/turbo_wht.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/turbo_wht.comp @@ -3,6 +3,8 @@ #extension GL_EXT_shader_16bit_storage : require #extension GL_EXT_control_flow_attributes : require +#extension GL_KHR_shader_subgroup_shuffle : require + layout (local_size_x = 128, local_size_y = 1, local_size_z = 1) in; layout (push_constant) uniform parameter { uint ne; uint direction; uint group_size; } p; @@ -47,21 +49,29 @@ void main() { const float fs = (p.direction == 0) ? S1[tid] : S2[tid]; const float ss = (p.direction == 0) ? S2[tid] : S1[tid]; - x[tid] = data_a[base + tid]; - barrier(); + float val = data_a[base + tid] * fs; - x[tid] *= fs; - barrier(); + // Optimized WHT using subgroup shuffle + uint sg_size = gl_SubgroupSize; + for (uint h = 1; h < sg_size && h < 128; h *= 2) { + float other = subgroupShuffleXor(val, h); + val = ((tid & h) == 0) ? (val + other) : (other - val); + } - [[unroll]] for (uint h = 1; h < 128; h *= 2) { - if ((tid % (2 * h)) < h) { - float a = x[tid]; - float b = x[tid + h]; - x[tid] = a + b; - x[tid + h] = a - b; - } + if (sg_size < 128) { + x[tid] = val; barrier(); + for (uint h = sg_size; h < 128; h *= 2) { + if ((tid % (2 * h)) < h) { + float a = x[tid]; + float b = x[tid + h]; + x[tid] = a + b; + x[tid + h] = a - b; + } + barrier(); + } + val = x[tid]; } - data_d[base + tid] = x[tid] * INV_SQRT_128 * ss; + data_d[base + tid] = val * INV_SQRT_128 * ss; } diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/types.glsl b/ggml/src/ggml-vulkan/vulkan-shaders/types.glsl index 10f079d2e427..7d1ddaef6658 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/types.glsl +++ b/ggml/src/ggml-vulkan/vulkan-shaders/types.glsl @@ -1747,6 +1747,56 @@ struct block_turbo3_0 #define A_TYPE block_turbo3_0 #endif +#define QUANT_K_TURBO2_0 128 +#define QUANT_R_TURBO2_0 1 + +struct block_turbo2_0 +{ + float16_t norm; + uint8_t qs[32]; // 2-bit centroid indices (4 per byte), 128/4 = 32 bytes +}; + +#if defined(DATA_A_TURBO2_0) +#define QUANT_K QUANT_K_TURBO2_0 +#define QUANT_R QUANT_R_TURBO2_0 +#define QUANT_AUXF 1 +#define A_TYPE block_turbo2_0 +#endif + +#define QUANT_K_TURBO4_0 128 +#define QUANT_R_TURBO4_0 1 + +struct block_turbo4_0 +{ + float16_t norm; + float16_t rnorm; // reserved + uint8_t qs[64]; // 4-bit centroid indices (2 per byte), 128/2 = 64 bytes +}; + +#if defined(DATA_A_TURBO4_0) +#define QUANT_K QUANT_K_TURBO4_0 +#define QUANT_R QUANT_R_TURBO4_0 +#define QUANT_AUXF 1 +#define A_TYPE block_turbo4_0 +#endif + +#define QUANT_K_TQ3_1S 32 +#define QUANT_R_TQ3_1S 1 + +struct block_tq3_1s +{ + float16_t d0; + float16_t d1; + uint8_t qs[12]; // 3-bit indices packed (32 * 3 / 8 = 12 bytes) +}; + +#if defined(DATA_A_TQ3_1S) +#define QUANT_K QUANT_K_TQ3_1S +#define QUANT_R QUANT_R_TQ3_1S +#define QUANT_AUXF 1 +#define A_TYPE block_tq3_1s +#endif + #define QUANT_K_TQ4_1S 32 #define QUANT_R_TQ4_1S 1 diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp index a7a2fc70f530..e904c4d796ac 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen.cpp @@ -68,7 +68,10 @@ const std::vector type_names = { "mxfp4", "nvfp4", "bf16", + "turbo2_0", "turbo3_0", + "turbo4_0", + "tq3_1s", "tq4_1s", }; @@ -327,7 +330,11 @@ compile_count_guard acquire_compile_slot() { } void string_to_spv_func(std::string name, std::string in_path, std::string out_path, std::map defines, bool coopmat, bool dep_file, compile_count_guard slot) { - std::string target_env = (name.find("_cm2") != std::string::npos) ? "--target-env=vulkan1.3" : "--target-env=vulkan1.2"; + bool needs_vulkan13 = name.find("_cm2") != std::string::npos || + name.find("_cm1") != std::string::npos || + name.find("_int8") != std::string::npos || + name.find("q8_1") != std::string::npos; + std::string target_env = needs_vulkan13 ? "--target-env=vulkan1.3" : "--target-env=vulkan1.2"; #ifdef _WIN32 std::vector cmd = {GLSLC, "-fshader-stage=compute", target_env, "\"" + in_path + "\"", "-o", "\"" + out_path + "\""}; @@ -668,7 +675,7 @@ void process_shaders() { if (tname == "f16") { string_to_spv("flash_attn_f32_f16_" + tname, "flash_attn_cm1.comp", merge_maps(fa_base_dict, {{"Q_TYPE", "float"}, {"D_TYPE", "float"}, {"D_TYPEV4", "vec4"}, {"COOPMAT", "1"}}), fp16, true, false, f16acc); - } else if (tname == "q4_0" || tname == "q4_1" || tname == "q5_0" || tname == "q5_1" || tname == "iq4_nl" || tname == "q8_0" || tname == "f32" || tname == "turbo3_0") { + } else if (tname == "q4_0" || tname == "q4_1" || tname == "q5_0" || tname == "q5_1" || tname == "iq4_nl" || tname == "q8_0" || tname == "f32" || tname == "turbo3_0" || tname == "turbo2_0" || tname == "turbo4_0") { std::string data_a_key = "DATA_A_" + to_uppercase(tname); string_to_spv("flash_attn_f32_f16_" + tname, "flash_attn_cm1.comp", merge_maps(fa_base_dict, {{data_a_key, "1"}, {"Q_TYPE", "float"}, {"D_TYPE", "float"}, {"D_TYPEV4", "vec4"}, {"BLOCK_SIZE", "QUANT_K_"+to_uppercase(tname)}, {"COOPMAT", "1"}}), fp16, true, false, f16acc); @@ -679,13 +686,13 @@ void process_shaders() { if (tname == "f16") { string_to_spv("flash_attn_f32_f16_" + tname, "flash_attn.comp", merge_maps(fa_base_dict, {{"Q_TYPE", "float"}, {"D_TYPE", "float"}, {"D_TYPEV4", "vec4"}}), fp16, false, false, f16acc); - } else if (tname == "q4_0" || tname == "q4_1" || tname == "q5_0" || tname == "q5_1" || tname == "iq4_nl" || tname == "q8_0" || tname == "f32" || tname == "turbo3_0") { + } else if (tname == "q4_0" || tname == "q4_1" || tname == "q5_0" || tname == "q5_1" || tname == "iq4_nl" || tname == "q8_0" || tname == "f32" || tname == "turbo3_0" || tname == "turbo2_0" || tname == "turbo4_0") { std::string data_a_key = "DATA_A_" + to_uppercase(tname); string_to_spv("flash_attn_f32_f16_" + tname, "flash_attn.comp", merge_maps(fa_base_dict, {{data_a_key, "1"}, {"Q_TYPE", "float"}, {"D_TYPE", "float"}, {"D_TYPEV4", "vec4"}, {"BLOCK_SIZE", "QUANT_K_"+to_uppercase(tname) }}), fp16, false, false, f16acc); #if defined(GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT) - // MMQ path has no turbo3_0 code path; skip. - if (tname != "f32" && tname != "turbo3_0") { + // MMQ path has no turbo3_0/turbo2_0/turbo4_0 code path; skip. + if (tname != "f32" && tname != "turbo3_0" && tname != "turbo2_0" && tname != "turbo4_0") { string_to_spv("flash_attn_f32_f16_" + tname, "flash_attn.comp", merge_maps(fa_base_dict, {{data_a_key, "1"}, {"Q_TYPE", "float"}, {"D_TYPE", "float"}, {"D_TYPEV4", "vec4"}, {"BLOCK_SIZE", "QUANT_K_"+to_uppercase(tname) }, {"MMQ", "1"}}), fp16, false, false, f16acc, "_int8"); } @@ -700,7 +707,7 @@ void process_shaders() { for (const auto& tname : type_names) { // mul mat vec std::string data_a_key = "DATA_A_" + to_uppercase(tname); - std::string shader = (string_ends_with(tname, "_k") || string_starts_with(tname, "iq1_") || string_starts_with(tname, "iq2_") || string_starts_with(tname, "iq3_") || tname == "tq4_1s") ? "mul_mat_vec_" + tname + ".comp" : "mul_mat_vec.comp"; + std::string shader = (string_ends_with(tname, "_k") || string_starts_with(tname, "iq1_") || string_starts_with(tname, "iq2_") || string_starts_with(tname, "iq3_") || tname == "tq3_1s" || tname == "tq4_1s") ? "mul_mat_vec_" + tname + ".comp" : "mul_mat_vec.comp"; string_to_spv("mul_mat_vec_" + tname + "_f32_f32", shader, merge_maps(base_dict, {{data_a_key, "1"}, {"B_TYPE", "float"}, {"B_TYPEV2", "vec2"}, {"B_TYPEV4", "vec4"}, {"D_TYPE", "float"}})); string_to_spv("mul_mat_vec_" + tname + "_f16_f32", shader, merge_maps(base_dict, {{data_a_key, "1"}, {"B_TYPE", "float16_t"}, {"B_TYPEV2", "f16vec2"}, {"B_TYPEV4", "f16vec4"}, {"D_TYPE", "float"}})); @@ -781,12 +788,12 @@ void process_shaders() { string_to_spv("cpy_f32_" + t, "copy_to_quant.comp", {{"DATA_A_" + to_uppercase(t), "1"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); string_to_spv("cpy_" + t + "_f32", "copy_from_quant.comp", {{"DATA_A_" + to_uppercase(t), "1"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); } - // turbo3_0 copy-from-quant only; copy-to-quant (cpy_f32_turbo3_0) omitted because the non-SET_ROWS quantize() path lacks the WHT transform - string_to_spv("cpy_turbo3_0_f32", "copy_from_quant.comp", {{"DATA_A_TURBO3_0", "1"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); - // tq4_1s copy-from-quant only; copy-to-quant requires WHT forward (handled in SET_ROWS path) - string_to_spv("cpy_tq4_1s_f32", "copy_from_quant.comp", {{"DATA_A_TQ4_1S", "1"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); + // turbo copy-from-quant; copy-to-quant (cpy_f32_turbo) omitted because the non-SET_ROWS quantize() path lacks the WHT transform + for (std::string t : {"turbo2_0", "turbo3_0", "turbo4_0", "tq3_1s", "tq4_1s"}) { + string_to_spv("cpy_" + t + "_f32", "copy_from_quant.comp", {{"DATA_A_" + to_uppercase(t), "1"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); + } - for (std::string t : {"f32", "f16", "bf16", "q1_0", "q4_0", "q4_1", "q5_0", "q5_1", "q8_0", "iq4_nl", "turbo3_0", "tq4_1s"}) { + for (std::string t : {"f32", "f16", "bf16", "q1_0", "q4_0", "q4_1", "q5_0", "q5_1", "q8_0", "iq4_nl", "turbo2_0", "turbo3_0", "turbo4_0", "tq3_1s", "tq4_1s"}) { string_to_spv("set_rows_" + t + "_i32", "copy_to_quant.comp", {{"SET_ROWS", "1"}, {"DATA_A_" + to_uppercase(t), "1"}, {"B_TYPE", "uint"}, {"B_SIZE", "32"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); string_to_spv("set_rows_" + t + "_i64", "copy_to_quant.comp", {{"SET_ROWS", "1"}, {"DATA_A_" + to_uppercase(t), "1"}, {"B_TYPE", "uvec2"}, {"B_SIZE", "64"}, {"D_TYPE", "float"}, {"FLOAT_TYPE", "float"}}); } From 70997d3db0f1af8ddf8c7324965bc9af344d0371 Mon Sep 17 00:00:00 2001 From: Emanuele Scarlata Date: Sun, 10 May 2026 10:16:29 +0000 Subject: [PATCH 2/4] fix(vulkan): extend set_rows workgroup size to TURBO2_0 and TURBO4_0 The local_size_x = 128 WHT butterfly path in copy_to_quant.comp was gated on DATA_A_TURBO3_0 only. TURBO2_0 and TURBO4_0 fell through to the generic 32-thread path, producing an incomplete 32-of-128 WHT and corrupting the KV cache entries for those types. Fix: extend the condition to cover all three turbo types. Co-Authored-By: Claude Sonnet 4.6 --- .../vulkan-shaders/copy_to_quant.comp | 2 +- .../vulkan-shaders/vulkan-shaders-gen | Bin 0 -> 312672 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100755 ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp b/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp index 6c9c6bccf675..9e66dae86629 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp +++ b/ggml/src/ggml-vulkan/vulkan-shaders/copy_to_quant.comp @@ -5,7 +5,7 @@ #extension GL_KHR_shader_subgroup_shuffle : enable #include "types.glsl" -#if defined(SET_ROWS) && defined(DATA_A_TURBO3_0) +#if defined(SET_ROWS) && (defined(DATA_A_TURBO3_0) || defined(DATA_A_TURBO2_0) || defined(DATA_A_TURBO4_0)) layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in; const uint BLOCK_SIZE = 128; #elif defined(SET_ROWS) && QUANT_K == 1 diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen b/ggml/src/ggml-vulkan/vulkan-shaders/vulkan-shaders-gen new file mode 100755 index 0000000000000000000000000000000000000000..4b4711a971332da685d215a787c1d350355e8f34 GIT binary patch literal 312672 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 Date: Sun, 10 May 2026 10:32:27 +0000 Subject: [PATCH 3/4] perf(vulkan): vectorize turbo dequantize4 in flash attention Hoist the norm/qs/signs loads out of the per-element loop in dequantize4 for all three turbo types. Since iqs is always a multiple of 4, all four elements within a dequantize4 call share the same qs byte (and the same signs byte for turbo3_0). This reduces the number of buffer loads from 4x2-4x3 per call down to 2-3, lowering cache pressure in the Q*K inner loop. Co-Authored-By: Claude Sonnet 4.6 --- .../vulkan-shaders/flash_attn_base.glsl | 101 +++++++++--------- 1 file changed, 52 insertions(+), 49 deletions(-) diff --git a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl index 6c5f4be59a9b..b81d1059d456 100644 --- a/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl +++ b/ggml/src/ggml-vulkan/vulkan-shaders/flash_attn_base.glsl @@ -272,23 +272,23 @@ FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { #if defined(DATA_A_TURBO2_0) const float T2C[4] = float[4](-0.133462, -0.039994, 0.039994, 0.133462); +// iqs is always a multiple of 4 (4 consecutive elements within the same qs byte group) FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { - FLOAT_TYPEV4 r; - for (int k = 0; k < 4; k++) { - uint j = iqs + uint(k); - float nm; - uint qb; - if (binding_idx == BINDING_IDX_K) { - nm = float(data_k_t2[a_offset + ib].norm); - qb = uint(data_k_t2[a_offset + ib].qs[j / 4]); - } else { - nm = float(data_v_t2[a_offset + ib].norm); - qb = uint(data_v_t2[a_offset + ib].qs[j / 4]); - } - uint idx = (qb >> ((j % 4) * 2)) & 0x3; - r[k] = FLOAT_TYPE(T2C[idx] * nm); + float nm; + uint qb; + if (binding_idx == BINDING_IDX_K) { + nm = float(data_k_t2[a_offset + ib].norm); + qb = uint(data_k_t2[a_offset + ib].qs[iqs / 4]); + } else { + nm = float(data_v_t2[a_offset + ib].norm); + qb = uint(data_v_t2[a_offset + ib].qs[iqs / 4]); } - return r; + return FLOAT_TYPEV4( + T2C[(qb ) & 0x3] * nm, + T2C[(qb >> 2) & 0x3] * nm, + T2C[(qb >> 4) & 0x3] * nm, + T2C[(qb >> 6) & 0x3] * nm + ); } #endif @@ -297,27 +297,28 @@ const float T3C[8] = float[8]( -0.190685, -0.117832, -0.065717, -0.021460, 0.021460, 0.065717, 0.117832, 0.190685 ); +// iqs is always a multiple of 4: all 4 elements share the same qs byte and same signs byte. FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { - FLOAT_TYPEV4 r; - for (int k = 0; k < 4; k++) { - uint j = iqs + uint(k); - float nm; - uint qb; - uint sb; - if (binding_idx == BINDING_IDX_K) { - nm = float(data_k_t3[a_offset + ib].norm); - qb = uint(data_k_t3[a_offset + ib].qs[j / 4]); - sb = uint(data_k_t3[a_offset + ib].signs[j / 8]); - } else { - nm = float(data_v_t3[a_offset + ib].norm); - qb = uint(data_v_t3[a_offset + ib].qs[j / 4]); - sb = uint(data_v_t3[a_offset + ib].signs[j / 8]); - } - uint lo = (qb >> ((j % 4) * 2)) & 0x3; - uint hi = (sb >> (j % 8)) & 0x1; - r[k] = FLOAT_TYPE(T3C[lo | (hi << 2)] * nm); + float nm; + uint qb; + uint sb; + if (binding_idx == BINDING_IDX_K) { + nm = float(data_k_t3[a_offset + ib].norm); + qb = uint(data_k_t3[a_offset + ib].qs[iqs / 4]); + sb = uint(data_k_t3[a_offset + ib].signs[iqs / 8]); + } else { + nm = float(data_v_t3[a_offset + ib].norm); + qb = uint(data_v_t3[a_offset + ib].qs[iqs / 4]); + sb = uint(data_v_t3[a_offset + ib].signs[iqs / 8]); } - return r; + // iqs is a multiple of 4; within the signs byte, the 4 elements start at bit (iqs%8). + uint sshift = iqs & 4u; // 0 if iqs%8 < 4, else 4 + return FLOAT_TYPEV4( + T3C[((qb ) & 0x3) | (((sb >> (sshift + 0)) & 1u) << 2)] * nm, + T3C[((qb >> 2) & 0x3) | (((sb >> (sshift + 1)) & 1u) << 2)] * nm, + T3C[((qb >> 4) & 0x3) | (((sb >> (sshift + 2)) & 1u) << 2)] * nm, + T3C[((qb >> 6) & 0x3) | (((sb >> (sshift + 3)) & 1u) << 2)] * nm + ); } #endif @@ -328,23 +329,25 @@ const float T4C[16] = float[16]( 0.006938, 0.020989, 0.035597, 0.051262, 0.068756, 0.089527, 0.117195, 0.173926 ); +// iqs is always even: pairs of elements share a qs nibble byte. FLOAT_TYPEV4 dequantize4(uint ib, uint iqs, uint a_offset, uint binding_idx) { - FLOAT_TYPEV4 r; - for (int k = 0; k < 4; k++) { - uint j = iqs + uint(k); - float nm; - uint qb; - if (binding_idx == BINDING_IDX_K) { - nm = float(data_k_t4[a_offset + ib].norm); - qb = uint(data_k_t4[a_offset + ib].qs[j / 2]); - } else { - nm = float(data_v_t4[a_offset + ib].norm); - qb = uint(data_v_t4[a_offset + ib].qs[j / 2]); - } - uint idx = (qb >> ((j % 2) * 4)) & 0xF; - r[k] = FLOAT_TYPE(T4C[idx] * nm); + float nm; + uint qb0, qb1; + if (binding_idx == BINDING_IDX_K) { + nm = float(data_k_t4[a_offset + ib].norm); + qb0 = uint(data_k_t4[a_offset + ib].qs[iqs / 2 ]); + qb1 = uint(data_k_t4[a_offset + ib].qs[iqs / 2 + 1]); + } else { + nm = float(data_v_t4[a_offset + ib].norm); + qb0 = uint(data_v_t4[a_offset + ib].qs[iqs / 2 ]); + qb1 = uint(data_v_t4[a_offset + ib].qs[iqs / 2 + 1]); } - return r; + return FLOAT_TYPEV4( + T4C[ qb0 & 0xF] * nm, + T4C[(qb0 >> 4) & 0xF] * nm, + T4C[ qb1 & 0xF] * nm, + T4C[(qb1 >> 4) & 0xF] * nm + ); } #endif From 941f04add88f0d00867653a5eaffca88be5bfd95 Mon Sep 17 00:00:00 2001 From: Emanuele Scarlata Date: Sun, 10 May 2026 10:47:22 +0000 Subject: [PATCH 4/4] feat(vulkan): register dedicated mul_mat_vec pipelines for turbo types Wire up pipeline_dequant_mul_mat_vec_f32_f32, _f16_f32, and _id_f32 for GGML_TYPE_TURBO2_0/3_0/4_0 and add them to the switch in ggml_vk_get_dequantize_mul_mat_vec() and ggml_vk_get_dequantize_mul_mat_vec_id(). Without this the decode path fell back to a slower dequantize-then-matmul route instead of the dedicated quantized kernel. Co-Authored-By: Claude Sonnet 4.6 --- ggml/src/ggml-vulkan/ggml-vulkan.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ggml/src/ggml-vulkan/ggml-vulkan.cpp b/ggml/src/ggml-vulkan/ggml-vulkan.cpp index 89f2722d6e7e..1ff1c61f5940 100644 --- a/ggml/src/ggml-vulkan/ggml-vulkan.cpp +++ b/ggml/src/ggml-vulkan/ggml-vulkan.cpp @@ -4233,6 +4233,9 @@ static void ggml_vk_load_shaders(vk_device& device) { // shared-memory reduction. NUM_ROWS=8 amortises the butterfly cost // across 8 output rows per workgroup. ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f32_f32[w][GGML_TYPE_TQ4_1S][i], "mul_mat_vec_tq4_1s_f32_f32", arr_dmmv_tq4_1s_f32_f32_len[tq4_1s_reduc], arr_dmmv_tq4_1s_f32_f32_data[tq4_1s_reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {8, 1, 1}, {tq4_1s_wg_size, 8, i+1}, 1, true, tq4_1s_use_subgroups, tq4_1s_force_sg_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f32_f32[w][GGML_TYPE_TURBO2_0][i], "mul_mat_vec_turbo2_0_f32_f32", arr_dmmv_turbo2_0_f32_f32_len[reduc], arr_dmmv_turbo2_0_f32_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f32_f32[w][GGML_TYPE_TURBO3_0][i], "mul_mat_vec_turbo3_0_f32_f32", arr_dmmv_turbo3_0_f32_f32_len[reduc], arr_dmmv_turbo3_0_f32_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f32_f32[w][GGML_TYPE_TURBO4_0][i], "mul_mat_vec_turbo4_0_f32_f32", arr_dmmv_turbo4_0_f32_f32_len[reduc], arr_dmmv_turbo4_0_f32_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_F32 ][i], "mul_mat_vec_f32_f16_f32", arr_dmmv_f32_f16_f32_len[reduc], arr_dmmv_f32_f16_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {1, 1, 1}, {wg_size_subgroup, 1, i+1}, 1, false, use_subgroups, force_subgroup_size); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_F16 ][i], "mul_mat_vec_f16_f16_f32", arr_dmmv_f16_f16_f32_len[reduc], arr_dmmv_f16_f16_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2, 1, 1}, {wg_size_subgroup, 2, i+1}, 1, false, use_subgroups, force_subgroup_size); @@ -4260,6 +4263,9 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_MXFP4][i], "mul_mat_vec_mxfp4_f16_f32", arr_dmmv_mxfp4_f16_f32_len[reduc16], arr_dmmv_mxfp4_f16_f32_data[reduc16], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {rm_iq, 1, 1}, {wg_size_subgroup16, rm_iq, i+1}, 1, true, use_subgroups16, force_subgroup_size16); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_NVFP4][i], "mul_mat_vec_nvfp4_f16_f32", arr_dmmv_nvfp4_f16_f32_len[reduc16], arr_dmmv_nvfp4_f16_f32_data[reduc16], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {rm_iq, 1, 1}, {wg_size_subgroup16, rm_iq, i+1}, 1, true, use_subgroups16, force_subgroup_size16); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_TQ4_1S][i], "mul_mat_vec_tq4_1s_f16_f32", arr_dmmv_tq4_1s_f16_f32_len[tq4_1s_reduc], arr_dmmv_tq4_1s_f16_f32_data[tq4_1s_reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {8, 1, 1}, {tq4_1s_wg_size, 8, i+1}, 1, true, tq4_1s_use_subgroups, tq4_1s_force_sg_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_TURBO2_0][i], "mul_mat_vec_turbo2_0_f16_f32", arr_dmmv_turbo2_0_f16_f32_len[reduc], arr_dmmv_turbo2_0_f16_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_TURBO3_0][i], "mul_mat_vec_turbo3_0_f16_f32", arr_dmmv_turbo3_0_f16_f32_len[reduc], arr_dmmv_turbo3_0_f16_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_f16_f32[w][GGML_TYPE_TURBO4_0][i], "mul_mat_vec_turbo4_0_f16_f32", arr_dmmv_turbo4_0_f16_f32_len[reduc], arr_dmmv_turbo4_0_f16_f32_data[reduc], "main", mul_mat_vec_num_bindings, sizeof(vk_mat_vec_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq, i+1}, 1, true, use_subgroups, force_subgroup_size); #if defined(GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT) if (device->integer_dot_product) { @@ -4312,6 +4318,9 @@ static void ggml_vk_load_shaders(vk_device& device) { ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_IQ4_NL], "mul_mat_vec_id_iq4_nl_f32", arr_dmmv_id_iq4_nl_f32_f32_len[reduc16], arr_dmmv_id_iq4_nl_f32_f32_data[reduc16], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {rm_iq, 1, 1}, {wg_size_subgroup16, rm_iq}, 1, true, use_subgroups16, force_subgroup_size16); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_MXFP4], "mul_mat_vec_id_mxfp4_f32", arr_dmmv_id_mxfp4_f32_f32_len[reduc16], arr_dmmv_id_mxfp4_f32_f32_data[reduc16], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {rm_iq, 1, 1}, {wg_size_subgroup16, rm_iq}, 1, true, use_subgroups16, force_subgroup_size16); ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_NVFP4], "mul_mat_vec_id_nvfp4_f32", arr_dmmv_id_nvfp4_f32_f32_len[reduc16], arr_dmmv_id_nvfp4_f32_f32_data[reduc16], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {rm_iq, 1, 1}, {wg_size_subgroup16, rm_iq}, 1, true, use_subgroups16, force_subgroup_size16); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_TURBO2_0], "mul_mat_vec_id_turbo2_0_f32", arr_dmmv_id_turbo2_0_f32_f32_len[reduc], arr_dmmv_id_turbo2_0_f32_f32_data[reduc], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_TURBO3_0], "mul_mat_vec_id_turbo3_0_f32", arr_dmmv_id_turbo3_0_f32_f32_len[reduc], arr_dmmv_id_turbo3_0_f32_f32_data[reduc], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq}, 1, true, use_subgroups, force_subgroup_size); + ggml_vk_create_pipeline(device, device->pipeline_dequant_mul_mat_vec_id_f32[w][GGML_TYPE_TURBO4_0], "mul_mat_vec_id_turbo4_0_f32", arr_dmmv_id_turbo4_0_f32_f32_len[reduc], arr_dmmv_id_turbo4_0_f32_f32_data[reduc], "main", mul_mat_vec_id_num_bindings, sizeof(vk_mat_vec_id_push_constants), {2*rm_stdq, 1, 1}, {wg_size_subgroup, 2*rm_stdq}, 1, true, use_subgroups, force_subgroup_size); #if defined(GGML_VULKAN_INTEGER_DOT_GLSLC_SUPPORT) if (device->integer_dot_product) { @@ -6340,6 +6349,9 @@ static vk_pipeline ggml_vk_get_dequantize_mul_mat_vec(ggml_backend_vk_context * case GGML_TYPE_MXFP4: case GGML_TYPE_NVFP4: case GGML_TYPE_TQ4_1S: + case GGML_TYPE_TURBO2_0: + case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: break; default: return nullptr; @@ -6506,6 +6518,9 @@ static vk_pipeline ggml_vk_get_dequantize_mul_mat_vec_id(ggml_backend_vk_context case GGML_TYPE_IQ4_NL: case GGML_TYPE_MXFP4: case GGML_TYPE_NVFP4: + case GGML_TYPE_TURBO2_0: + case GGML_TYPE_TURBO3_0: + case GGML_TYPE_TURBO4_0: break; default: return nullptr;