From 4e0eff9735ead5b1221080dca6e91deea91ab87e Mon Sep 17 00:00:00 2001 From: AntoinePrv Date: Wed, 30 Sep 2026 14:13:36 +0200 Subject: [PATCH 1/4] Fix openmp --- examples/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index d050aa73f..4ab3e20d5 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -29,12 +29,15 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native") endif() if(NOT CMAKE_CXX_COMPILER_ID MATCHES Clang) # We are using clang-cl - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") + find_package(OpenMP COMPONENTS CXX) endif() endif() add_executable(mandelbrot mandelbrot.cpp) target_link_libraries(mandelbrot PRIVATE xsimd) +if(OpenMP_CXX_FOUND) + target_link_libraries(mandelbrot PRIVATE OpenMP::OpenMP_CXX) +endif() set_property(TARGET mandelbrot PROPERTY CXX_STANDARD 17) if(ENABLE_XTL_COMPLEX) target_link_libraries(mandelbrot PRIVATE xtl) From e196374f3ebc745148b69f63425f16a031cab02c Mon Sep 17 00:00:00 2001 From: AntoinePrv Date: Wed, 30 Sep 2026 14:22:13 +0200 Subject: [PATCH 2/4] Fix win arm64ec double flags --- cmake/Architecture.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/Architecture.cmake b/cmake/Architecture.cmake index e6f3fd948..e7c2dcc03 100644 --- a/cmake/Architecture.cmake +++ b/cmake/Architecture.cmake @@ -92,6 +92,11 @@ function(xsimd_get_arm64_arch_flags_msvc out_list arch arm64_baseline) if(arch MATCHES "sve") message(FATAL_ERROR "SVE not supported on MSVC compilers") elseif(arch MATCHES "neon") + # ARM64EC always has Neon and must stay ABI compatible with x64 code. + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "ARM64EC") + set(${out_list} "" PARENT_SCOPE) + return() + endif() if(arm64_baseline STREQUAL "") set(arm64_baseline "armv8.0") endif() From 77250553a3470176d752852f0e143fc00b29caa2 Mon Sep 17 00:00:00 2001 From: AntoinePrv Date: Wed, 30 Sep 2026 14:35:46 +0200 Subject: [PATCH 3/4] Pin msvc --- .github/workflows/windows.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 92e4b3c23..aa0925669 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -167,6 +167,8 @@ jobs: uses: ilammy/msvc-dev-cmd@v1 with: arch: arm64 + # MSVC 19.51 miscompiles the float log1p kernel on neon64 + toolset: 14.44 - name: Setup Ninja run: | python3 -m pip install --upgrade pip setuptools wheel From 121a21a7897f398aeb3d312347335ec4675c5049 Mon Sep 17 00:00:00 2001 From: AntoinePrv Date: Wed, 30 Sep 2026 14:53:16 +0200 Subject: [PATCH 4/4] Fix openmp simd flag --- examples/CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 4ab3e20d5..dc450748f 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -29,15 +29,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" OR CMAKE_CXX_COMPILER_ID MATCHES "GNU" set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native") endif() if(NOT CMAKE_CXX_COMPILER_ID MATCHES Clang) # We are using clang-cl - find_package(OpenMP COMPONENTS CXX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp-simd") endif() endif() add_executable(mandelbrot mandelbrot.cpp) target_link_libraries(mandelbrot PRIVATE xsimd) -if(OpenMP_CXX_FOUND) - target_link_libraries(mandelbrot PRIVATE OpenMP::OpenMP_CXX) -endif() set_property(TARGET mandelbrot PROPERTY CXX_STANDARD 17) if(ENABLE_XTL_COMPLEX) target_link_libraries(mandelbrot PRIVATE xtl)