]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Fix missing intrinsics (MSVS 2015, 2017)
authorVladislav Shchapov <vladislav@shchapov.ru>
Tue, 11 Oct 2022 13:12:16 +0000 (18:12 +0500)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 11 Oct 2022 19:25:02 +0000 (21:25 +0200)
Signed-off-by: Vladislav Shchapov <vladislav@shchapov.ru>
arch/x86/adler32_ssse3_p.h
fallback_builtins.h

index ba914e1df56cc5f2ed86c5dad41c152340529ba4..0b7ddcf9da426ad6b9fe3a58a0c3491e1c110758 100644 (file)
@@ -12,7 +12,7 @@
 #include <stdint.h>
 
 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);
 }
index 32bb54dc6fb85a1ae3d201780dab14cb10f67cde..eacaee36bf4a17893e5347853a63418e07cc3a61 100644 (file)
@@ -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