From 42f8fee633ce2188bb2d9189577e35b0fc2cea0e Mon Sep 17 00:00:00 2001 From: Craig Andrews Date: Wed, 26 Nov 2025 13:16:50 -0500 Subject: [PATCH] ggml-cpu: BMI2 is only available on amd64 MSVC doesn't define __BMI2__ so it must be defined by by CMake. It was being set whenever GGML_BMI2 is set, but that results in a failure (`error LNK2019: unresolved external symbol __pdep_u64`) when targeting x86 (aka 32 bit) Windows. The fix is to only set __BMI2__ when targeting amd64. --- ggml/src/ggml-cpu/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ggml/src/ggml-cpu/CMakeLists.txt b/ggml/src/ggml-cpu/CMakeLists.txt index 7e53a57b7b0..0f09ca4eceb 100644 --- a/ggml/src/ggml-cpu/CMakeLists.txt +++ b/ggml/src/ggml-cpu/CMakeLists.txt @@ -302,7 +302,10 @@ function(ggml_add_cpu_backend_variant_impl tag_name) endif() if (GGML_BMI2) # MSVC does not define macro __BMI2__ - list(APPEND ARCH_DEFINITIONS __BMI2__ GGML_BMI2) + if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "amd64") + # BMI2 is only available on amd64 + list(APPEND ARCH_DEFINITIONS __BMI2__ GGML_BMI2) + endif() endif() else () if (GGML_NATIVE)