From c32eefd87f8c5b0de3372fef924767f1bd9c1039 Mon Sep 17 00:00:00 2001 From: Rajendra Prasad Matcha Date: Mon, 11 May 2026 16:07:32 +0530 Subject: [PATCH] Fix incorrect leading dimension check for SME SGEMM direct kernel path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For row-major matrices, the tight-packing condition should be k==lda (A is m×k), n==ldb (B is k×n), and n==ldc (C is m×n). The old check used m==lda and k==ldc, which prevented the SME/direct kernel from being invoked except when m==k==n (square matrices). Fixes https://github.com/OpenMathLib/OpenBLAS/issues/5794 --- interface/gemm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/interface/gemm.c b/interface/gemm.c index 60addbd2ca..79b076164c 100644 --- a/interface/gemm.c +++ b/interface/gemm.c @@ -562,12 +562,12 @@ if (strcmp(gotoblas_corename(), "armv9sme") == 0 ) // if (support_sme1()) #endif - if (order == CblasRowMajor && m==lda && n ==ldb && k==ldc && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + if (order == CblasRowMajor && k==lda && n==ldb && n==ldc && beta == 0 && alpha == 1.0 && TransA == CblasNoTrans && TransB == CblasNoTrans && SGEMM_DIRECT_PERFORMANT(m,n,k)) { SGEMM_DIRECT(m, n, k, a, lda, b, ldb, c, ldc); return; } else - if (order == CblasRowMajor && m==lda && n==ldb && k==ldc && TransA == CblasNoTrans && TransB == CblasNoTrans&& SGEMM_DIRECT_PERFORMANT(m,n,k)) { + if (order == CblasRowMajor && k==lda && n==ldb && n==ldc && TransA == CblasNoTrans && TransB == CblasNoTrans && SGEMM_DIRECT_PERFORMANT(m,n,k)) { SGEMM_DIRECT_ALPHA_BETA(m, n, k, alpha, a, lda, b, ldb, beta, c, ldc); return; }