diff --git a/src/libImaging/ImPlatform.h b/src/libImaging/ImPlatform.h index 90d87e445..e7feff9b5 100644 --- a/src/libImaging/ImPlatform.h +++ b/src/libImaging/ImPlatform.h @@ -9,6 +9,11 @@ #include "Python.h" +/* Microsoft compiler doesn't limit intrinsics for an architecture. + This macro is set only on x86 and means SSE2 and above including AVX2. */ +#if defined(_M_X64) || _M_IX86_FP == 2 + #define __SSE4_2__ +#endif #if defined(__SSE4_2__) #include #include diff --git a/src/libImaging/ImagingUtils.h b/src/libImaging/ImagingUtils.h index 8357719b5..ba6210886 100644 --- a/src/libImaging/ImagingUtils.h +++ b/src/libImaging/ImagingUtils.h @@ -52,6 +52,6 @@ mm_cvtepu8_epi32(void *ptr) { #if defined(__AVX2__) static __m256i inline mm256_cvtepu8_epi32(void *ptr) { - return _mm256_cvtepu8_epi32(_mm_cvtsi64_si128(*(int64_t *) ptr)); + return _mm256_cvtepu8_epi32(_mm_loadl_epi64((__m128i *) ptr)); } #endif