option(WITH_DFLTCC_INFLATE "Build with DFLTCC intrinsics for decompression on IBM Z" OFF)
option(WITH_CRC32_VX "Build with vectorized CRC32 on IBM Z" ON)
elseif(BASEARCH_X86_FOUND)
- option(FORCE_TZCNT "Always assume CPU is TZCNT capable" OFF)
option(WITH_AVX2 "Build with AVX2" ON)
option(WITH_AVX512 "Build with AVX512" ON)
option(WITH_AVX512VNNI "Build with AVX512 VNNI extensions" ON)
set(WITH_SSE4 OFF)
endif()
endif()
- if(FORCE_TZCNT)
- add_definitions(-DX86_NOCHECK_TZCNT)
- endif()
- add_feature_info(FORCE_TZCNT FORCE_TZCNT "Assume CPU is TZCNT capable")
if(WITH_SSE2)
check_sse2_intrinsics()
if(HAVE_SSE2_INTRIN)
| CMake | configure | Description | Default |
|:--------------------------------|:----------------------|:--------------------------------------------------------------------|------------------------|
| FORCE_SSE2 | --force-sse2 | Skip runtime check for SSE2 instructions (Always on for x86_64) | OFF (x86) |
-| FORCE_TZCNT | --force-tzcnt | Skip runtime check for TZCNT instructions | OFF |
| WITH_AVX2 | | Build with AVX2 intrinsics | ON |
| WITH_AVX512 | | Build with AVX512 intrinsics | ON |
| WITH_AVX512VNNI | | Build with AVX512VNNI intrinsics | ON |
x86_cpu_has_avx512vnni = 0;
x86_cpu_has_vpclmulqdq = 0;
}
-#ifdef X86_NOCHECK_TZCNT
- Assert(!!x86_cpu_has_tzcnt, "TZCNT is not available");
-#endif
}
floatabi=
native=0
forcesse2=0
-forcetzcnt=0
# For CPUs that can benefit from AVX512, it seems GCC generates suboptimal
# instruction scheduling unless you specify a reasonable -mtune= target
avx512flag="-mavx512f -mavx512dq -mavx512bw -mavx512vl -mtune=cascadelake"
echo ' [--without-crc32-vx] Build without vectorized CRC32 on IBM Z' | tee -a configure.log
echo ' [--with-reduced-mem] Reduced memory usage for special cases (reduces performance)' | tee -a configure.log
echo ' [--force-sse2] Assume SSE2 instructions are always available (disabled by default on x86, enabled on x86_64)' | tee -a configure.log
- echo ' [--force-tzcnt] Assume TZCNT instructions are always available (disabled by default)' | tee -a configure.log
echo ' [--native] Compiles with full instruction set supported on this host' | tee -a configure.log
exit 0 ;;
-p*=* | --prefix=*) prefix=$(echo $1 | sed 's/.*=//'); shift ;;
--without-crc32-vx) buildcrc32vx=0; shift ;;
--with-reduced-mem) reducedmem=1; shift ;;
--force-sse2) forcesse2=1; shift ;;
- --force-tzcnt) forcetzcnt=1; shift ;;
-n | --native) native=1; shift ;;
-a*=* | --archs=*) ARCHS=$(echo $1 | sed 's/.*=//'); shift ;;
--sysconfdir=*) echo "ignored option: --sysconfdir" | tee -a configure.log; shift ;;
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"
- fi
fi
;;