summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2023-01-07 19:31:15 +0200
committerLasse Collin <lasse.collin@tukaani.org>2023-01-08 00:20:42 +0200
commitceb805011747d04a915f3f39e4bed9eed151c634 (patch)
tree5321f59f5e5ee96791e3977b8009be7ef7832588 /configure.ac
parent8d372bd94066b1a5b0570b2550f83c2868486adf (diff)
downloadxz-ceb805011747d04a915f3f39e4bed9eed151c634.tar.gz
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 'configure.ac')
-rw-r--r--configure.ac8
1 files changed, 6 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index a595cd9..07cff50 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])
], [