From e7bfaab186971bdfc97e5c64baac3d2139fa903f Mon Sep 17 00:00:00 2001 From: notaJiminLee Date: Fri, 19 Jun 2026 12:41:36 +0900 Subject: [PATCH] Fix qd8_f16_qb4w GEMM config getter always returning NULL on Arm xnn_init_qd8_f16_qb4w_gemm_config() gates its return on qd8_f16_qb4w_gemm_config.arch, but init_qd8_f16_qb4w_gemm_config() never assigns .arch on any Arm branch (only mr/nr/log2_kr/planes/dqgemm). So on Arm64 the getter always returns NULL, and every QD8/F16/QB4W fully-connected op fails at runtime creation with xnn_status_unsupported_hardware. This surfaces once the convert->FC packed-LHS path sets INLINE_LHS_PACKING and setup_variant_and_gemm_config gets a NULL gemm config. Align with the qd8_f16_qc4w sibling getter, which returns the config unconditionally (its init likewise does not set .arch). Verified on Apple M4: a QD8/F16/QB4W linear .pte that previously aborted with unsupported_hardware now runs (Model executed successfully). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/configs/gemm-config.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/configs/gemm-config.c b/src/configs/gemm-config.c index 1d7bff743a1..9e1275ca491 100644 --- a/src/configs/gemm-config.c +++ b/src/configs/gemm-config.c @@ -6275,7 +6275,7 @@ const struct xnn_gemm_config* xnn_init_qd8_f16_qb4w_gemm_config() { return NULL; } XNN_INIT_ONCE(qd8_f16_qb4w_gemm); - return qd8_f16_qb4w_gemm_config.arch ? &qd8_f16_qb4w_gemm_config : NULL; + return &qd8_f16_qb4w_gemm_config; } const struct xnn_gemm_config* xnn_init_qd8_f32_qc4w_gemm_config() {