add_feature_info(AVX512_ADLER32 1 "Support AVX512-accelerated adler32, using \"${AVX512FLAG}\"")
list(APPEND ZLIB_ARCH_SRCS ${AVX512_SRCS})
list(APPEND ZLIB_ARCH_HDRS ${ARCHDIR}/adler32_avx512_p.h)
- if(HAVE_MASK_INTRIN)
- add_definitions(-DX86_MASK_INTRIN)
- endif()
set_property(SOURCE ${AVX512_SRCS} PROPERTY COMPILE_FLAGS "${AVX512FLAG} ${NOLTOFLAG}")
else()
set(WITH_AVX512 OFF)
int main(void) { return 0; }"
HAVE_AVX512_INTRIN
)
-
- # Evidently both GCC and clang were late to implementing these
- check_c_source_compiles(
- "#include <immintrin.h>
- __mmask16 f(__mmask16 x) { return _knot_mask16(x); }
- int main(void) { return 0; }"
- HAVE_MASK_INTRIN
- )
- set(CMAKE_REQUIRED_FLAGS)
endmacro()
macro(check_avx512vnni_intrinsics)
fi
}
-check_mask_intrinsics() {
- # Check whether compiler supports AVX512 k-mask intrinsics
- cat > $test.c << EOF
-#include <immintrin.h>
-__mmask16 f(__mmask16 x) { return _knot_mask16(x); }
-int main(void) { return 0; }
-EOF
- if try ${CC} ${CFLAGS} ${avx512flag} $test.c; then
- echo "Checking for AVX512 k-mask intrinsics ... Yes." | tee -a configure.log
- HAVE_MASK_INTRIN=1
- else
- echo "Checking for AVX512 k-mask intrinsics ... No." | tee -a configure.log
- HAVE_MASK_INTRIN=0
- fi
-}
-
check_acle_compiler_flag() {
# Check whether -march=armv8-a+crc works correctly
cat > $test.c << EOF
SFLAGS="${SFLAGS} -DX86_AVX512"
ARCH_STATIC_OBJS="${ARCH_STATIC_OBJS} adler32_avx512.o"
ARCH_SHARED_OBJS="${ARCH_SHARED_OBJS} adler32_avx512.lo"
-
- check_mask_intrinsics
-
- if test ${HAVE_MASK_INTRIN} -eq 1; then
- CFLAGS="${CFLAGS} -DX86_MASK_INTRIN"
- SFLAGS="${SFLAGS} -DX86_MASK_INTRIN"
- fi
fi
check_mtune_cascadelake_compiler_flag