12345678910111213141516171819202122232425262728293031323334353637383940 |
- diff --git a/thirdparty/embree/common/simd/arm/sse2neon.h b/thirdparty/embree/common/simd/arm/sse2neon.h
- index b18d41e783..5a75ccff20 100644
- --- a/thirdparty/embree/common/simd/arm/sse2neon.h
- +++ b/thirdparty/embree/common/simd/arm/sse2neon.h
- @@ -102,7 +102,7 @@
- #include <stdint.h>
- #include <stdlib.h>
-
- -#if defined(_WIN32)
- +#if defined(_WIN32) && !defined(__MINGW32__)
- /* Definitions for _mm_{malloc,free} are provided by <malloc.h>
- * from both MinGW-w64 and MSVC.
- */
- @@ -1888,7 +1888,11 @@ FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b)
- #if !defined(SSE2NEON_ALLOC_DEFINED)
- FORCE_INLINE void _mm_free(void *addr)
- {
- +#if defined(_WIN32)
- + _aligned_free(addr);
- +#else
- free(addr);
- +#endif
- }
- #endif
-
- @@ -2080,8 +2084,14 @@ FORCE_INLINE void *_mm_malloc(size_t size, size_t align)
- return malloc(size);
- if (align == 2 || (sizeof(void *) == 8 && align == 4))
- align = sizeof(void *);
- +#if defined(_WIN32)
- + ptr = _aligned_malloc(size, align);
- + if (ptr)
- + return ptr;
- +#else
- if (!posix_memalign(&ptr, align, size))
- return ptr;
- +#endif
- return NULL;
- }
- #endif
|