HAVE_SSSE3_INTRIN=0
fi
+# Check for SSE4.2 CRC inline assembly
+case "${ARCH}" in
+ i386 | i486 | i586 | i686 | x86_64)
+ cat > $test.c << EOF
+int main(void) {
+ unsigned val = 0, h = 0;
+ __asm__ __volatile__ ( "crc32 %1,%0" : "+r" (h) : "r" (val) );
+ return (int) h;
+}
+EOF
+ if try ${CC} ${CFLAGS} ${sse42flag} $test.c; then
+ echo "Checking for SSE4.2 CRC inline assembly ... Yes." | tee -a configure.log
+ HAVE_SSE42CRC_INLINE_ASM=1
+ else
+ echo "Checking for SSE4.2 CRC inline assembly ... No." | tee -a configure.log
+ HAVE_SSE42CRC_INLINE_ASM=0
+ fi
+ ;;
+esac
+
# Check for SSE4.2 CRC intrinsics
case "${ARCH}" in
i386 | i486 | i586 | i686 | x86_64)
CFLAGS="${CFLAGS} -DUNALIGNED_OK -DUNALIGNED64_OK"
SFLAGS="${SFLAGS} -DUNALIGNED_OK -DUNALIGNED64_OK"
- # Enable arch-specific optimizations?
+ # Enable arch-specific optimizations
if test $without_optimizations -eq 0; then
CFLAGS="${CFLAGS} -DX86_CPUID"
SFLAGS="${SFLAGS} -DX86_CPUID"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_ssse3.lo"
fi
- if test ${HAVE_SSE42CRC_INTRIN} -eq 1; then
- CFLAGS="${CFLAGS} -DX86_SSE42_CRC_INTRIN"
- SFLAGS="${SFLAGS} -DX86_SSE42_CRC_INTRIN"
- fi
-
if test ${HAVE_SSE42CMPSTR_INTRIN} -eq 1; then
CFLAGS="${CFLAGS} -DX86_SSE42_CMP_STR"
SFLAGS="${SFLAGS} -DX86_SSE42_CMP_STR"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} compare258_sse.lo"
fi
+ if test ${HAVE_SSE42CRC_INTRIN} -eq 1 || test ${HAVE_SSE42CRC_INLINE_ASM} -eq 1; then
+ CFLAGS="${CFLAGS} -DX86_SSE42_CRC_HASH"
+ SFLAGS="${SFLAGS} -DX86_SSE42_CRC_HASH"
+
+ if test ${HAVE_SSE42CRC_INTRIN} -eq 1; then
+ CFLAGS="${CFLAGS} -DX86_SSE42_CRC_INTRIN"
+ SFLAGS="${SFLAGS} -DX86_SSE42_CRC_INTRIN"
+ fi
+
+ ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} insert_string_sse.o"
+ ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} insert_string_sse.lo"
+ fi
+
if test ${HAVE_AVX2_INTRIN} -eq 1; then
CFLAGS="${CFLAGS} -DX86_AVX2 -DX86_AVX2_ADLER32"
SFLAGS="${SFLAGS} -DX86_AVX2 -DX86_AVX2_ADLER32"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} compare258_avx.lo slide_avx.lo adler32_avx.lo"
fi
- CFLAGS="${CFLAGS} -DX86_SSE42_CRC_HASH"
- SFLAGS="${SFLAGS} -DX86_SSE42_CRC_HASH"
- ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} insert_string_sse.o"
- ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} insert_string_sse.lo"
-
if test ${HAVE_PCLMULQDQ_INTRIN} -eq 1; then
CFLAGS="${CFLAGS} -DX86_PCLMULQDQ_CRC"
SFLAGS="${SFLAGS} -DX86_PCLMULQDQ_CRC"
CFLAGS="${CFLAGS} -DUNALIGNED_OK -DUNALIGNED64_OK"
SFLAGS="${SFLAGS} -DUNALIGNED_OK -DUNALIGNED64_OK"
- # Enable arch-specific optimizations?
+ # Enable arch-specific optimizations
if test $without_optimizations -eq 0; then
- CFLAGS="${CFLAGS} -DX86_CPUID -DX86_SSE2 -DX86_SSE2_CHUNKSET -DX86_SSE42_CRC_HASH"
- SFLAGS="${SFLAGS} -DX86_CPUID -DX86_SSE2 -DX86_SSE2_CHUNKSET -DX86_SSE42_CRC_HASH"
+ CFLAGS="${CFLAGS} -DX86_CPUID -DX86_SSE2 -DX86_SSE2_CHUNKSET"
+ SFLAGS="${SFLAGS} -DX86_CPUID -DX86_SSE2 -DX86_SSE2_CHUNKSET"
- ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} x86.o chunkset_sse.o insert_string_sse.o slide_sse.o"
- ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} x86.lo chunkset_sse.lo insert_string_sse.lo slide_sse.lo"
+ ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} x86.o chunkset_sse.o slide_sse.o"
+ ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} x86.lo chunkset_sse.lo slide_sse.lo"
if test ${HAVE_SSSE3_INTRIN} -eq 1; then
CFLAGS="${CFLAGS} -DX86_SSSE3 -DX86_SSSE3_ADLER32"
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} compare258_sse.o"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} compare258_sse.lo"
fi
+
+ if test ${HAVE_SSE42CRC_INTRIN} -eq 1 || test ${HAVE_SSE42CRC_INLINE_ASM} -eq 1; then
+ CFLAGS="${CFLAGS} -DX86_SSE42_CRC_HASH"
+ SFLAGS="${SFLAGS} -DX86_SSE42_CRC_HASH"
+
+ if test ${HAVE_SSE42CRC_INTRIN} -eq 1; then
+ CFLAGS="${CFLAGS} -DX86_SSE42_CRC_INTRIN"
+ SFLAGS="${SFLAGS} -DX86_SSE42_CRC_INTRIN"
+ fi
+
+ ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} insert_string_sse.o"
+ ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} insert_string_sse.lo"
+ fi
+
fi
;;