From: Vladislav Shchapov Date: Tue, 11 Oct 2022 13:12:16 +0000 (+0500) Subject: Fix missing intrinsics (MSVS 2015, 2017) X-Git-Tag: 2.1.0-beta1~146 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=78284a439fcd530b22b2f64a8764c54904812c11;p=thirdparty%2Fzlib-ng.git Fix missing intrinsics (MSVS 2015, 2017) Signed-off-by: Vladislav Shchapov --- diff --git a/arch/x86/adler32_ssse3_p.h b/arch/x86/adler32_ssse3_p.h index ba914e1df..0b7ddcf9d 100644 --- a/arch/x86/adler32_ssse3_p.h +++ b/arch/x86/adler32_ssse3_p.h @@ -12,7 +12,7 @@ #include static inline uint32_t partial_hsum(__m128i x) { - __m128i second_int = _mm_bsrli_si128(x, 8); + __m128i second_int = _mm_srli_si128(x, 8); __m128i sum = _mm_add_epi32(x, second_int); return _mm_cvtsi128_si32(sum); } diff --git a/fallback_builtins.h b/fallback_builtins.h index 32bb54dc6..eacaee36b 100644 --- a/fallback_builtins.h +++ b/fallback_builtins.h @@ -71,4 +71,22 @@ static inline __m512i _mm512_zextsi128_si512(__m128i a) { #endif // __AVX2__ +/* Missing zero-extension AVX and AVX512 intrinsics. + * Fixed in Microsoft Visual Studio 2017 version 15.7 + * https://developercommunity.visualstudio.com/t/missing-zero-extension-avx-and-avx512-intrinsics/175737 + */ +#if defined(_MSC_VER) && _MSC_VER < 1914 +#ifdef __AVX2__ +static inline __m256i _mm256_zextsi128_si256(__m128i a) { + return _mm256_inserti128_si256(_mm256_setzero_si256(), a, 0); +} +#endif // __AVX2__ + +#ifdef __AVX512F__ +static inline __m512i _mm512_zextsi128_si512(__m128i a) { + return _mm512_inserti32x4(_mm512_setzero_si512(), a, 0); +} +#endif // __AVX512F__ +#endif // defined(_MSC_VER) && _MSC_VER < 1914 + #endif // include guard FALLBACK_BUILTINS_H