From: Daylen Yang Date: Tue, 11 Aug 2020 19:02:48 +0000 (-0700) Subject: Use posix_memalign for Apple Silicon instead of _mm_malloc X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=6bc0256292cf51d390fee0cb78963da884dc2677 Use posix_memalign for Apple Silicon instead of _mm_malloc fails to build on that target, because of missing Intel Intrinsics. macOS has posix_memalign() since ~2014 so we can simplify the code and just use that for all Apple platforms. closes https://github.com/official-stockfish/Stockfish/pull/2985 No functional change. --- diff --git a/src/misc.cpp b/src/misc.cpp index fc3746cf..aeb3c912 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -51,7 +51,7 @@ typedef bool(*fun3_t)(HANDLE, CONST GROUP_AFFINITY*, PGROUP_AFFINITY); #include #endif -#if (defined(__APPLE__) && defined(_LIBCPP_HAS_C11_FEATURES)) || defined(__ANDROID__) || defined(__OpenBSD__) || (defined(__GLIBCXX__) && !defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) && !defined(_WIN32)) +#if defined(__APPLE__) || defined(__ANDROID__) || defined(__OpenBSD__) || (defined(__GLIBCXX__) && !defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) && !defined(_WIN32)) #define POSIXALIGNEDALLOC #include #endif @@ -328,7 +328,7 @@ void* std_aligned_alloc(size_t alignment, size_t size) { if(posix_memalign(&pointer, alignment, size) == 0) return pointer; return nullptr; -#elif (defined(_WIN32) || (defined(__APPLE__) && !defined(_LIBCPP_HAS_C11_FEATURES))) +#elif defined(_WIN32) return _mm_malloc(size, alignment); #else return std::aligned_alloc(alignment, size); @@ -338,7 +338,7 @@ void* std_aligned_alloc(size_t alignment, size_t size) { void std_aligned_free(void* ptr) { #if defined(POSIXALIGNEDALLOC) free(ptr); -#elif (defined(_WIN32) || (defined(__APPLE__) && !defined(_LIBCPP_HAS_C11_FEATURES))) +#elif defined(_WIN32) _mm_free(ptr); #else free(ptr);