From 6673083ff6e83d9438d9db3ef5b16f6f854942b8 Mon Sep 17 00:00:00 2001 From: Anitha Raj Date: Wed, 4 Jun 2025 11:52:15 +0100 Subject: [PATCH 1/2] Enable MSVC support for matmul_clamp_f32_qsi8d32p_qai4c32p micro-kernels * Update architectural feature guards and CMakeLists to enable MSVC build for matmul_clamp_f32_qsi8d32p_qai4c32p micro-kernels. Signed-off-by: Anitha Raj --- CMakeLists.txt | 7 +++++-- .../pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c | 2 +- ...ai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 68c707dc..68b92ef0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -153,6 +153,8 @@ set(KLEIDIAI_FILES_NEON_FP16_BF16 ) set(KLEIDIAI_FILES_NEON_ASM + kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c + kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4c32pnrx8_qsu4c32s1s0_neon.c ) @@ -166,8 +168,6 @@ set(KLEIDIAI_FILES_NEON kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4c32ps1s0scalef16_qsu4c32s16s0_neon.c kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi4cxps1s0_qsu4cxs1s0_neon.c kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qsi8cxp_qsi8cx_neon.c - kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c - kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c ) set(KLEIDIAI_FILES_NEON_DOTPROD_ASM @@ -295,6 +295,7 @@ target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_SCALAR}) # Selectively enable architecture features. if(NOT MSVC) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON}) + target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_MSVC}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16_DOTPROD}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16_I8MM}) @@ -307,6 +308,7 @@ if(NOT MSVC) set_source_files_properties(${KLEIDIAI_FILES_SCALAR} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) + set_source_files_properties(${KLEIDIAI_FILES_NEON_MSVC} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16_DOTPROD} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16+dotprod${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16_I8MM} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16+i8mm${KLEIDIAI_INTERNAL_EXTRA_ARCH}) @@ -420,6 +422,7 @@ if(KLEIDIAI_BUILD_TESTS) test/tests/bfloat16_test.cpp test/tests/float16_test.cpp test/tests/matmul_clamp_f32_qai8dxp_qsi4c32p_test.cpp + test/tests/matmul_clamp_f32_qsi8d32p_qai4c32p_test.cpp ) else() add_executable(kleidiai_test diff --git a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c index 13571b59..1cfcaf71 100644 --- a/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c +++ b/kai/ukernels/matmul/pack/kai_lhs_quant_pack_qsi8d32pscalef32_f32_neon.c @@ -4,7 +4,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#if !defined(__aarch64__) +#if !defined(__aarch64__) && !defined(_M_ARM64) #error This file must be compiled for AArch64. #else // Architectural features check. diff --git a/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c b/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c index b7183ac1..e2ad2f51 100644 --- a/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c +++ b/kai/ukernels/matmul/pack/kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.c @@ -4,7 +4,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#if !defined(__aarch64__) +#if !defined(__aarch64__) && !defined(_M_ARM64) #error This file must be compiled for AArch64. #else // Architectural features check. #include "kai_rhs_pack_nxk_qai4c32p_qau4c32s0s1_f32_f32_f32_neon.h" -- GitLab From b702aa4780d19662d3e0102d032a5e33af65c8af Mon Sep 17 00:00:00 2001 From: Anitha Raj Date: Thu, 5 Jun 2025 12:44:09 +0100 Subject: [PATCH 2/2] Remove redundant changes to CMakeLists Signed-off-by: Anitha Raj --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 68b92ef0..90e915b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -295,7 +295,6 @@ target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_SCALAR}) # Selectively enable architecture features. if(NOT MSVC) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON}) - target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_MSVC}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16_DOTPROD}) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_NEON_FP16_I8MM}) @@ -308,7 +307,6 @@ if(NOT MSVC) set_source_files_properties(${KLEIDIAI_FILES_SCALAR} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) - set_source_files_properties(${KLEIDIAI_FILES_NEON_MSVC} PROPERTIES COMPILE_OPTIONS -march=armv8-a${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16_DOTPROD} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16+dotprod${KLEIDIAI_INTERNAL_EXTRA_ARCH}) set_source_files_properties(${KLEIDIAI_FILES_NEON_FP16_I8MM} PROPERTIES COMPILE_OPTIONS -march=armv8.2-a+fp16+i8mm${KLEIDIAI_INTERNAL_EXTRA_ARCH}) -- GitLab