diff options
author | Lasse Collin <lasse.collin@tukaani.org> | 2023-01-07 19:31:15 +0200 |
---|---|---|
committer | Lasse Collin <lasse.collin@tukaani.org> | 2023-01-09 16:58:27 +0200 |
commit | 52bc1ee34dda9bb6fb40175e5952863066681b77 (patch) | |
tree | 90b492f6fb5f18ffab6177f9bc86fb03a543b927 /configure.ac | |
parent | Tests: Creates test_index_hash.c (diff) | |
download | xz-52bc1ee34dda9bb6fb40175e5952863066681b77.tar.xz |
Build: Require that _mm_set_epi64x() is usable to enable CLMUL support.
VS2013 doesn't have _mm_set_epi64x() so this way CLMUL gets
disabled with VS2013.
Thanks to Iouri Kharon for the bug report.
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac index a595cd98..07cff50b 100644 --- a/configure.ac +++ b/configure.ac @@ -938,6 +938,8 @@ AC_CHECK_DECL([_mm_movemask_epi8], # For faster CRC on 32/64-bit x86 and E2K (see also crc64_fast.c): # # - Check for the CLMUL intrinsic _mm_clmulepi64_si128 in <immintrin.h>. +# Check also for _mm_set_epi64x for consistency with CMake build +# where it's needed to disable CLMUL with VS2013. # # - Check that __attribute__((__target__("ssse3,sse4.1,pclmul"))) works # together with _mm_clmulepi64_si128 from <immintrin.h>. The attribute @@ -965,13 +967,15 @@ else #if (defined(__GNUC__) || defined(__clang__)) && !defined(__EDG__) __attribute__((__target__("ssse3,sse4.1,pclmul"))) #endif -__m128i my_clmul(__m128i a, __m128i b) +__m128i my_clmul(__m128i a) { + const __m128i b = _mm_set_epi64x(1, 2); return _mm_clmulepi64_si128(a, b, 0); } ]])], [ AC_DEFINE([HAVE_USABLE_CLMUL], [1], - [Define to 1 if _mm_clmulepi64_si128 is usable. + [Define to 1 if _mm_set_epi64x and + _mm_clmulepi64_si128 are usable. See configure.ac for details.]) AC_MSG_RESULT([yes]) ], [ |