0005-mingw-llvm-arm64.patch 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. diff --git a/thirdparty/embree/common/simd/arm/sse2neon.h b/thirdparty/embree/common/simd/arm/sse2neon.h
  2. index b18d41e783..5a75ccff20 100644
  3. --- a/thirdparty/embree/common/simd/arm/sse2neon.h
  4. +++ b/thirdparty/embree/common/simd/arm/sse2neon.h
  5. @@ -102,7 +102,7 @@
  6. #include <stdint.h>
  7. #include <stdlib.h>
  8. -#if defined(_WIN32)
  9. +#if defined(_WIN32) && !defined(__MINGW32__)
  10. /* Definitions for _mm_{malloc,free} are provided by <malloc.h>
  11. * from both MinGW-w64 and MSVC.
  12. */
  13. @@ -1888,7 +1888,11 @@ FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b)
  14. #if !defined(SSE2NEON_ALLOC_DEFINED)
  15. FORCE_INLINE void _mm_free(void *addr)
  16. {
  17. +#if defined(_WIN32)
  18. + _aligned_free(addr);
  19. +#else
  20. free(addr);
  21. +#endif
  22. }
  23. #endif
  24. @@ -2080,8 +2084,14 @@ FORCE_INLINE void *_mm_malloc(size_t size, size_t align)
  25. return malloc(size);
  26. if (align == 2 || (sizeof(void *) == 8 && align == 4))
  27. align = sizeof(void *);
  28. +#if defined(_WIN32)
  29. + ptr = _aligned_malloc(size, align);
  30. + if (ptr)
  31. + return ptr;
  32. +#else
  33. if (!posix_memalign(&ptr, align, size))
  34. return ptr;
  35. +#endif
  36. return NULL;
  37. }
  38. #endif