Use posix_memalign for Apple Silicon instead of _mm_malloc
authorDaylen Yang <services@daylenyang.com>
Tue, 11 Aug 2020 19:02:48 +0000 (12:02 -0700)
committerJoost VandeVondele <Joost.VandeVondele@gmail.com>
Wed, 12 Aug 2020 05:49:36 +0000 (07:49 +0200)
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.

src/misc.cpp

index fc3746cf69a112a24407d46fb0488cc8df1fe2d5..aeb3c912bf23a286e3c31028e66aaa5ed31938fc 100644 (file)
@@ -51,7 +51,7 @@ typedef bool(*fun3_t)(HANDLE, CONST GROUP_AFFINITY*, PGROUP_AFFINITY);
 #include <sys/mman.h>
 #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 <stdlib.h>
 #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);