@@ -470,6 +470,24 @@ AX_CHECK_COMPILE_FLAG([-msse4.1],[[SSE41_CXXFLAGS="-msse4.1"]],,[[$CXXFLAG_WERRO
470
470
AX_CHECK_COMPILE_FLAG ( [ -mavx -mavx2] ,[ [ AVX2_CXXFLAGS="-mavx -mavx2"] ] ,,[ [ $CXXFLAG_WERROR] ] )
471
471
AX_CHECK_COMPILE_FLAG ( [ -msse4 -msha] ,[ [ SHANI_CXXFLAGS="-msse4 -msha"] ] ,,[ [ $CXXFLAG_WERROR] ] )
472
472
473
+ enable_clmul=
474
+ AX_CHECK_COMPILE_FLAG ( [ -mpclmul] , [ enable_clmul=yes] , [ ] , [ $CXXFLAG_WERROR] , [ AC_LANG_PROGRAM ( [
475
+ #include <stdint.h>
476
+ #include <x86intrin.h>
477
+ ] , [
478
+ __m128i a = _mm_cvtsi64_si128((uint64_t)7);
479
+ __m128i b = _mm_clmulepi64_si128(a, a, 37);
480
+ __m128i c = _mm_srli_epi64(b, 41);
481
+ __m128i d = _mm_xor_si128(b, c);
482
+ uint64_t e = _mm_cvtsi128_si64(d);
483
+ return e == 0;
484
+ ] ) ] )
485
+
486
+ if test x$enable_clmul = xyes; then
487
+ CLMUL_CXXFLAGS="-mpclmul"
488
+ AC_DEFINE ( HAVE_CLMUL , 1 , [ Define this symbol if clmul instructions can be used] )
489
+ fi
490
+
473
491
TEMP_CXXFLAGS="$CXXFLAGS"
474
492
CXXFLAGS="$CXXFLAGS $SSE42_CXXFLAGS"
475
493
AC_MSG_CHECKING ( for SSE4.2 intrinsics )
@@ -950,19 +968,20 @@ AC_CHECK_DECLS([bswap_16, bswap_32, bswap_64],,,
950
968
#endif] )
951
969
952
970
AC_MSG_CHECKING ( for __builtin_clzl )
971
+
953
972
AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( [ [ ] ] , [ [
954
973
(void) __builtin_clzl(0);
955
974
] ] ) ] ,
956
- [ AC_MSG_RESULT ( yes ) ; AC_DEFINE ( HAVE_BUILTIN_CLZL , 1 , [ Define this symbol if you have __builtin_clzl] ) ] ,
957
- [ AC_MSG_RESULT ( no ) ]
975
+ [ AC_MSG_RESULT ( yes ) ; have_clzl=yes; AC_DEFINE ( HAVE_BUILTIN_CLZL , 1 , [ Define this symbol if you have __builtin_clzl] ) ] ,
976
+ [ AC_MSG_RESULT ( no ) ; have_clzl=no; ]
958
977
)
959
978
960
979
AC_MSG_CHECKING ( for __builtin_clzll )
961
980
AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( [ [ ] ] , [ [
962
981
(void) __builtin_clzll(0);
963
982
] ] ) ] ,
964
- [ AC_MSG_RESULT ( yes ) ; AC_DEFINE ( HAVE_BUILTIN_CLZLL , 1 , [ Define this symbol if you have __builtin_clzll] ) ] ,
965
- [ AC_MSG_RESULT ( no ) ]
983
+ [ AC_MSG_RESULT ( yes ) ; have_clzll=yes; AC_DEFINE ( HAVE_BUILTIN_CLZLL , 1 , [ Define this symbol if you have __builtin_clzll] ) ] ,
984
+ [ AC_MSG_RESULT ( no ) ; have_clzll=no; ]
966
985
)
967
986
968
987
dnl Check for malloc_info (for memory statistics information in getmemoryinfo)
@@ -1763,6 +1782,10 @@ AM_CONDITIONAL([WORDS_BIGENDIAN],[test x$ac_cv_c_bigendian = xyes])
1763
1782
AM_CONDITIONAL([ USE_NATPMP] ,[ test x$use_natpmp = xyes] )
1764
1783
AM_CONDITIONAL([ USE_UPNP] ,[ test x$use_upnp = xyes] )
1765
1784
1785
+ dnl for minisketch
1786
+ AM_CONDITIONAL([ ENABLE_CLMUL] ,[ test x$enable_clmul = xyes] )
1787
+ AM_CONDITIONAL([ HAVE_CLZ] ,[ test x$have_clzl$have_clzll = xyesyes] )
1788
+
1766
1789
AC_DEFINE ( CLIENT_VERSION_MAJOR , _CLIENT_VERSION_MAJOR , [ Major version] )
1767
1790
AC_DEFINE ( CLIENT_VERSION_MINOR , _CLIENT_VERSION_MINOR , [ Minor version] )
1768
1791
AC_DEFINE ( CLIENT_VERSION_BUILD , _CLIENT_VERSION_BUILD , [ Version Build] )
@@ -1806,6 +1829,7 @@ AC_SUBST(SANITIZER_CXXFLAGS)
1806
1829
AC_SUBST ( SANITIZER_LDFLAGS )
1807
1830
AC_SUBST ( SSE42_CXXFLAGS )
1808
1831
AC_SUBST ( SSE41_CXXFLAGS )
1832
+ AC_SUBST ( CLMUL_CXXFLAGS )
1809
1833
AC_SUBST ( AVX2_CXXFLAGS )
1810
1834
AC_SUBST ( SHANI_CXXFLAGS )
1811
1835
AC_SUBST ( ARM_CRC_CXXFLAGS )
0 commit comments