]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Fix performance degradation with -m32 (#2926)
authorbinhdvo <binhvo@gmail.com>
Tue, 14 Dec 2021 20:53:50 +0000 (15:53 -0500)
committerGitHub <noreply@github.com>
Tue, 14 Dec 2021 20:53:50 +0000 (15:53 -0500)
lib/common/zstd_internal.h

index 9073df42236c64facf89fa98742b43ab4effc40b..3dc14bb149409873b0335c52812a12bfc208d4ae 100644 (file)
@@ -188,8 +188,13 @@ static void ZSTD_copy16(void* dst, const void* src) {
     vst1q_u8((uint8_t*)dst, vld1q_u8((const uint8_t*)src));
 #elif defined(ZSTD_ARCH_X86_SSE2)
     _mm_storeu_si128((__m128i*)dst, _mm_loadu_si128((const __m128i*)src));
-#else
+#elif defined(__clang__)
     ZSTD_memmove(dst, src, 16);
+#else
+    /* ZSTD_memmove is not inlined properly by gcc */
+    BYTE copy16_buf[16];
+    ZSTD_memcpy(copy16_buf, src, 16);
+    ZSTD_memcpy(dst, copy16_buf, 16);
 #endif
 }
 #define COPY16(d,s) { ZSTD_copy16(d,s); d+=16; s+=16; }