From ceb805011747d04a915f3f39e4bed9eed151c634 Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Sat, 7 Jan 2023 19:31:15 +0200 Subject: 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. --- configure.ac | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'configure.ac') 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 . +# 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 . 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]) ], [ -- cgit v1.2.3