Skip to content

Commit a4c1eb4

Browse files
committed
Use Windows/ARM64 in interpreted mode only (II)
1 parent be5e66c commit a4c1eb4

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

CMakeLists.txt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,28 @@ function(miniexpr_setup_target target_name)
334334
target_link_libraries(${target_name} PRIVATE miniexpr_wasm_libtcc)
335335
endif()
336336
if(WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "Clang")
337-
target_link_libraries(${target_name} PUBLIC clang_rt.builtins-x86_64.lib)
337+
set(_miniexpr_builtins_names)
338+
if(CMAKE_VS_PLATFORM_NAME STREQUAL "ARM64"
339+
OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|AARCH64|arm64|aarch64)$")
340+
list(APPEND _miniexpr_builtins_names
341+
clang_rt.builtins-aarch64
342+
clang_rt.builtins-arm64)
343+
elseif(CMAKE_VS_PLATFORM_NAME STREQUAL "x64"
344+
OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(AMD64|X86_64|amd64|x86_64)$")
345+
list(APPEND _miniexpr_builtins_names clang_rt.builtins-x86_64)
346+
endif()
347+
if(_miniexpr_builtins_names)
348+
unset(_miniexpr_builtins_lib CACHE)
349+
find_library(_miniexpr_builtins_lib NAMES ${_miniexpr_builtins_names})
350+
if(_miniexpr_builtins_lib)
351+
target_link_libraries(${target_name} PUBLIC "${_miniexpr_builtins_lib}")
352+
else()
353+
message(STATUS
354+
"MiniExpr: clang_rt builtins library not found for ${CMAKE_VS_PLATFORM_NAME}; using default toolchain runtime.")
355+
endif()
356+
unset(_miniexpr_builtins_lib CACHE)
357+
endif()
358+
unset(_miniexpr_builtins_names)
338359
endif()
339360
if(NOT WIN32)
340361
target_link_libraries(${target_name} PRIVATE m)

src/functions-simd.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3801,6 +3801,7 @@ void vec_cos_f32_cached(const float* a, float* out, int n) {
38013801
memcpy(out, cache->cos_buf, (size_t)n * sizeof(float));
38023802
}
38033803

3804+
#if ME_ENABLE_SLEEF_SIMD && (defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64))
38043805
static int me_cpu_supports_avx2(void) {
38053806
#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64)
38063807
#if defined(_MSC_VER)
@@ -3847,6 +3848,7 @@ static int me_cpu_supports_avx2(void) {
38473848
return 0;
38483849
#endif
38493850
}
3851+
#endif
38503852

38513853
#if ME_ENABLE_SLEEF_SIMD && (defined(__aarch64__) || defined(_M_ARM64))
38523854
static int me_cpu_supports_advsimd(void) {

0 commit comments

Comments
 (0)