Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions Configure.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ endif()

# TARGET PROCESSOR DETECTION
set(SLEEF_TARGET_PROCESSOR "${CMAKE_SYSTEM_PROCESSOR}")
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$")
if(CMAKE_SYSTEM_NAME MATCHES "^(Darwin|iOS)$" AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$")
set(SLEEF_TARGET_PROCESSOR "${CMAKE_OSX_ARCHITECTURES}")
endif()

Expand All @@ -189,11 +189,17 @@ endif()
if(SLEEF_TARGET_PROCESSOR MATCHES "(x86|AMD64|amd64|^i.86$)")
set(SLEEF_ARCH_X86 ON CACHE INTERNAL "True for x86 architecture.")

set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mavx2;-mfma")
elseif(SLEEF_TARGET_PROCESSOR MATCHES "aarch64|arm64")
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-mavx2;-mfma")
else()
set(CLANG_FLAGS_ENABLE_PURECFMA_SCALAR "-DFP_FAST_FMA;-DFP_FAST_FMAF")
endif()
elseif(SLEEF_TARGET_PROCESSOR MATCHES "aarch64|arm64|ARM64")
set(SLEEF_ARCH_AARCH64 ON CACHE INTERNAL "True for Aarch64 architecture.")
# Aarch64 requires support for advsimdfma4
set(COMPILER_SUPPORTS_ADVSIMD 1)
if(NOT MSVC)
set(COMPILER_SUPPORTS_ADVSIMD 1)
endif()

elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64" OR CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
set(SLEEF_ARCH_PPC64 ON CACHE INTERNAL "True for PPC64 architecture.")
Expand Down Expand Up @@ -251,7 +257,7 @@ if(CMAKE_C_COMPILER_ID MATCHES "(GNU|Clang)")
set(FLAGS_FASTMATH "-ffast-math")
set(FLAGS_NOSTRICTALIASING "-fno-strict-aliasing")

if (SLEEF_ARCH_X86 AND SLEEF_ARCH_32BIT)
if (SLEEF_ARCH_X86 AND SLEEF_ARCH_32BIT AND NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
string(CONCAT FLAGS_STRICTMATH ${FLAGS_STRICTMATH} " -msse2 -mfpmath=sse")
string(CONCAT FLAGS_FASTMATH ${FLAGS_FASTMATH} " -msse2 -mfpmath=sse")
endif()
Expand Down Expand Up @@ -488,7 +494,7 @@ endif()

# Darwin does not support SVE yet (see issue #474),
# therefore we disable SVE on Darwin systems.
if(SLEEF_ARCH_AARCH64 AND SLEEF_ENABLE_SVE AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin")
if(SLEEF_ARCH_AARCH64 AND SLEEF_ENABLE_SVE AND NOT CMAKE_SYSTEM_NAME MATCHES "^(Darwin|iOS)$")
string (REPLACE ";" " " CMAKE_REQUIRED_FLAGS "${FLAGS_ENABLE_SVE}")
CHECK_C_SOURCE_COMPILES("
#include <arm_sve.h>
Expand Down Expand Up @@ -756,7 +762,7 @@ if (NOT BUILD_SHARED_LIBS)
set(SLEEF_STATIC_LIBS 1)
endif()

if (COMPILER_SUPPORTS_WEAK_ALIASES)
if(COMPILER_SUPPORTS_WEAK_ALIASES AND NOT (WIN32 AND CMAKE_C_COMPILER_ID STREQUAL "GNU"))
set(COMMON_TARGET_DEFINITIONS ${COMMON_TARGET_DEFINITIONS} ENABLE_ALIAS=1)
endif()

Expand Down
2 changes: 1 addition & 1 deletion src/arch/helperadvsimd.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
/* http://www.boost.org/LICENSE_1_0.txt) */
/*********************************************************************/

#if !defined(__ARM_NEON) && !defined(SLEEF_GENHEADER)
#if !defined(__ARM_NEON) && !defined(_M_ARM64) && !defined(SLEEF_GENHEADER)
#error Please specify advsimd flags.
#endif

Expand Down
2 changes: 1 addition & 1 deletion src/common/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ EXPORT void *Sleef_malloc(size_t z) { void *ptr = NULL; posix_memalign(&ptr, 409
EXPORT void Sleef_free(void *ptr) { free(ptr); }
#endif // #if defined(__MINGW32__) || defined(__MINGW64__) || defined(_MSC_VER)

#ifdef _MSC_VER
#if defined _MSC_VER && (defined(_M_IX86) || defined(_M_X64))
#include <intrin.h>
EXPORT void Sleef_x86CpuID(int32_t out[4], uint32_t eax, uint32_t ecx) {
__cpuidex(out, eax, ecx);
Expand Down