@@ -511,22 +511,34 @@ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
511511)
512512CXXFLAGS="$TEMP_CXXFLAGS"
513513
514- TEMP_CXXFLAGS="$CXXFLAGS"
515- CXXFLAGS="$X86_SHANI_CXXFLAGS $CXXFLAGS"
516- AC_MSG_CHECKING ( [ for x86 SHA-NI intrinsics] )
517- AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( [ [
518- #include <stdint.h>
519- #include <immintrin.h>
520- ] ] ,[ [
521- __m128i i = _mm_set1_epi32(0);
522- __m128i j = _mm_set1_epi32(1);
523- __m128i k = _mm_set1_epi32(2);
524- return _mm_extract_epi32(_mm_sha256rnds2_epu32(i, i, k), 0);
525- ] ] ) ] ,
526- [ AC_MSG_RESULT ( [ yes] ) ; enable_x86_shani=yes; AC_DEFINE ( [ ENABLE_X86_SHANI] , [ 1] , [ Define this symbol to build code that uses x86 SHA-NI intrinsics] ) ] ,
527- [ AC_MSG_RESULT ( [ no] ) ]
528- )
529- CXXFLAGS="$TEMP_CXXFLAGS"
514+ dnl SHANI depends on SSE4.1 so only check if that is already enabled
515+ if test "x$enable_sse41" = "xyes"; then
516+ TEMP_CXXFLAGS="$CXXFLAGS"
517+ CXXFLAGS="$X86_SHANI_CXXFLAGS $CXXFLAGS"
518+ AC_MSG_CHECKING ( [ for x86 SHA-NI intrinsics] )
519+ AC_COMPILE_IFELSE ( [ AC_LANG_PROGRAM ( [ [
520+ #include <stdint.h>
521+ #include <immintrin.h>
522+ ] ] ,[ [
523+ __m128i i = _mm_set1_epi32(0);
524+ __m128i j = _mm_set1_epi32(1);
525+ __m128i k = _mm_set1_epi32(2);
526+ return _mm_extract_epi32(_mm_sha256rnds2_epu32(i, i, k), 0);
527+ ] ] ) ] ,
528+ [ AC_MSG_RESULT ( [ yes] )
529+ enable_x86_shani=yes
530+ AC_DEFINE ( [ ENABLE_X86_SHANI] , [ 1] , [ Define this symbol to build code that uses x86 SHA-NI intrinsics] ) ] ,
531+ [ AC_MSG_RESULT ( [ no] )
532+ enable_x86_shani=no ]
533+ )
534+ CXXFLAGS="$TEMP_CXXFLAGS"
535+ else
536+ enable_x86_shani=no
537+ AC_MSG_WARN ( [ SSE4.1 not enabled. SHANI support will be disabled.] )
538+ fi
539+
540+ dnl Ensure the conditional is set correctly
541+ AM_CONDITIONAL([ ENABLE_X86_SHANI] , [ test "x$enable_x86_shani" = "xyes"] )
530542
531543# ARM
532544AX_CHECK_COMPILE_FLAG ( [ -march=armv8-a+crc+crypto] , [ ARM_CRC_CXXFLAGS="-march=armv8-a+crc+crypto"] , [ ] , [ $CXXFLAG_WERROR] )
0 commit comments