[llvm-branch-commits] [llvm] [openmp] [openmp] Add support for Arm64X to libomp (PR #176157)

David Truby via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Jan 29 06:50:40 PST 2026


================
@@ -232,6 +232,22 @@ if(LIBC_GPU_BUILD)
   list(APPEND RUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES "libc")
 endif()
 
+# Set up Arm64X build of the OpenMP runtime
+option(LIBOMP_ENABLE_ARM64X "Build the OpenMP library as Arm64X for compatibility with both Arm64 and Arm64EC" OFF)
+if(LIBOMP_ENABLE_ARM64X)
+  if(NOT LLVM_HOST_TRIPLE STREQUAL "aarch64-pc-windows-msvc")
+    messsage(FATAL_ERROR "Arm64X builds are only supported on Windows on Arm hosts.")
+  endif()
+  if(NOT LLVM_RUNTIME_TARGETS)
+    set(LLVM_RUNTIME_TARGETS "default")
+  endif()
+
+  if(NOT "arm64ec-pc-windows-msvc" IN_LIST LLVM_RUNTIME_TARGETS)
+    list(APPEND LLVM_RUNTIME_TARGETS "arm64ec-pc-windows-msvc")
+  endif()
+  set(RUNTIMES_arm64ec-pc-windows-msvc_LIBOMP_ENABLE_ARM64X ON)
+endif()
----------------
DavidTruby wrote:

It'll only error out when cross compiling if you also request the ARM64X build there, and that won't work anyway atm so we _should_ error out in that case I think?

I suppose it could be done with a cache file but we still need to establish the `LIBOMP_ENABLE_ARM64X` variable somehow, and check that it's not being used in a way that won't work, so I'd still have to just change these `set(...` commands to `if(NOT ...) message(FATAL_ERROR ...)` or there will just be confusing failures way later in the build

https://github.com/llvm/llvm-project/pull/176157


More information about the llvm-branch-commits mailing list