SSE42FLAG=-msse4.2
PCLMULFLAG=-mpclmul
VPCLMULFLAG=-mvpclmulqdq
+XSAVEFLAG=-mxsave
NOLTOFLAG=
SRCDIR=.
slide_hash_sse2.o slide_hash_sse2.lo
x86_features.o:
- $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/x86_features.c
+ $(CC) $(CFLAGS) $(XSAVEFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/x86_features.c
x86_features.lo:
- $(CC) $(SFLAGS) $(INCLUDES) -c -o $@ $(SRCDIR)/x86_features.c
+ $(CC) $(SFLAGS) $(XSAVEFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/x86_features.c
chunkset_avx.o:
$(CC) $(CFLAGS) $(AVX2FLAG) $(NOLTOFLAG) $(INCLUDES) -c -o $@ $(SRCDIR)/chunkset_avx.c
HAVE_VGFMA_INTRIN FAIL_REGEX "not supported")
set(CMAKE_REQUIRED_FLAGS)
endmacro()
+
+macro(check_xsave_intrinsics)
+ if(NOT NATIVEFLAG AND NOT MSVC)
+ set(XSAVEFLAG "-mxsave")
+ endif()
+ set(CMAKE_REQUIRED_FLAGS "${XSAVEFLAG} ${NATIVEFLAG}")
+ check_c_source_compiles(
+ "#ifdef _WIN32
+ # include <intrin.h>
+ #else
+ # include <x86gprintrin.h>
+ #endif
+ int main(void) {
+ return _xgetbv(0);
+ }"
+ HAVE_XSAVE_INTRIN FAIL_REGEX "not supported")
+ set(CMAKE_REQUIRED_FLAGS)
+endmacro()
sse42flag="-msse4.2"
pclmulflag="-mpclmul"
vpclmulflag="-mvpclmulqdq -mavx512f"
+xsaveflag="-mxsave"
acleflag=
neonflag=
noltoflag="-fno-lto"
sse42flag=""
pclmulflag=""
vpclmulflag=""
+ xsaveflag=""
noltoflag=""
fi
fi
}
+check_xsave_intrinsics() {
+ # Check whether compiler supports XSAVE intrinsics
+ cat > $test.c << EOF
+#ifdef _WIN32
+# include <intrin.h>
+#else
+# include <x86gprintrin.h>
+#endif
+int main(void) {
+ return _xgetbv(0);
+}
+EOF
+ if try ${CC} ${CFLAGS} ${xsaveflag} $test.c; then
+ echo "Checking for XSAVE intrinsics ... Yes." | tee -a configure.log
+ HAVE_XSAVE_INTRIN=1
+ else
+ echo "Checking for XSAVE intrinsics ... No." | tee -a configure.log
+ HAVE_XSAVE_INTRIN=0
+ fi
+}
+
check_ppc_intrinsics() {
cat > $test.c << EOF
#include <altivec.h>
fi
fi
+ check_xsave_intrinsics
+
+ if test ${HAVE_XSAVE_INTRIN} -eq 0; then
+ xsaveflag=""
+ fi
+
if test $forcetzcnt -eq 1; then
CFLAGS="${CFLAGS} -DX86_NOCHECK_TZCNT"
SFLAGS="${SFLAGS} -DX86_NOCHECK_TZCNT"
echo sse42flag = $sse42flag >> configure.log
echo pclmulflag = $pclmulflag >> configure.log
echo vpclmulflag = $vpclmulflag >> configure.log
+echo xsaveflag = $xsaveflag >> configure.log
echo acleflag = $acleflag >> configure.log
echo neonflag = $neonflag >> configure.log
echo ARCHDIR = ${ARCHDIR} >> configure.log
/^SSE42FLAG *=/s#=.*#=$sse42flag#
/^PCLMULFLAG *=/s#=.*#=$pclmulflag#
/^VPCLMULFLAG *=/s#=.*#=$vpclmulflag#
+/^XSAVEFLAG *=/s#=.*#=$xsaveflag#
/^ACLEFLAG *=/s#=.*#=$acleflag#
/^NEONFLAG *=/s#=.*#=$neonflag#
/^NOLTOFLAG *=/s#=.*#=$noltoflag#