From: Hans Kristian Rosbach Date: Mon, 6 Feb 2023 11:40:13 +0000 (+0100) Subject: Combine some of the checks that were not identical. X-Git-Tag: 2.1.0-beta1~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d9ddac4cdb8b47f7e1cf5ff016d4f5609c94c02;p=thirdparty%2Fzlib-ng.git Combine some of the checks that were not identical. Made longest_match and compare256 use the X86_NOCHECK_SSE2 override, thus now those are also automatically enabled on x86_64. --- diff --git a/functable.c b/functable.c index 6d30585d6..3eef010b8 100644 --- a/functable.c +++ b/functable.c @@ -56,27 +56,24 @@ static void init_functable(void) { // Select arch-optimized functions // X86 - SSE2 -#ifdef X86_SSE2 +#if defined(X86_SSE2) || defined(X86_SSE2_CHUNKSET) # if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2) if (x86_cpu_has_sse2) # endif + { +# ifdef X86_SSE2 ft.slide_hash = &slide_hash_sse2; -#endif -#if defined(X86_SSE2) && defined(HAVE_BUILTIN_CTZ) - if (x86_cpu_has_sse2) { +# ifdef HAVE_BUILTIN_CTZ ft.longest_match = &longest_match_sse2; ft.longest_match_slow = &longest_match_slow_sse2; ft.compare256 = &compare256_sse2; - } -#endif -#ifdef X86_SSE2_CHUNKSET -# if !defined(__x86_64__) && !defined(_M_X64) && !defined(X86_NOCHECK_SSE2) - if (x86_cpu_has_sse2) -# endif - { +# endif +# endif +# ifdef X86_SSE2_CHUNKSET ft.chunksize = &chunksize_sse2; ft.chunkmemset_safe = &chunkmemset_safe_sse2; ft.inflate_fast = &inflate_fast_sse2; +# endif } #endif // X86 - SSSE3 @@ -121,14 +118,13 @@ static void init_functable(void) { } #endif #ifdef X86_AVX2 - if (x86_cpu_has_avx2) - ft.slide_hash = &slide_hash_avx2; -#endif -#if defined(X86_AVX2) && defined(HAVE_BUILTIN_CTZ) if (x86_cpu_has_avx2) { + ft.slide_hash = &slide_hash_avx2; +# ifdef HAVE_BUILTIN_CTZ ft.longest_match = &longest_match_avx2; ft.longest_match_slow = &longest_match_slow_avx2; ft.compare256 = &compare256_avx2; +# endif } #endif #ifdef X86_AVX2_ADLER32