configure: add configure option avx512f_opt

If it is enabled, config-host.mak will have CONFIG_AVX512F_OPT defined.

AVX512F instruction set is available since Intel Skylake, and can be enabled in
compiling with -mavx512f.
More info:
https://software.intel.com/sites/default/files/managed/c5/15/architecture-instruction-set-extensions-programming-reference.pdf

Signed-off-by: Robert Hoo <robert.hu@linux.intel.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Robert Hoo 2020-02-29 20:34:34 +08:00 committed by Paolo Bonzini
parent 880a7817c1
commit 6b8cd447ef
1 changed files with 41 additions and 0 deletions

41
configure vendored
View File

@ -1421,6 +1421,11 @@ for opt do
;; ;;
--enable-avx2) avx2_opt="yes" --enable-avx2) avx2_opt="yes"
;; ;;
--disable-avx512f) avx512f_opt="no"
;;
--enable-avx512f) avx512f_opt="yes"
;;
--enable-glusterfs) glusterfs="yes" --enable-glusterfs) glusterfs="yes"
;; ;;
--disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
@ -1857,6 +1862,7 @@ disabled with --disable-FEATURE, default is enabled if available:
tcmalloc tcmalloc support tcmalloc tcmalloc support
jemalloc jemalloc support jemalloc jemalloc support
avx2 AVX2 optimization support avx2 AVX2 optimization support
avx512f AVX512F optimization support
replication replication support replication replication support
opengl opengl support opengl opengl support
virglrenderer virgl rendering support virglrenderer virgl rendering support
@ -5574,6 +5580,36 @@ EOF
fi fi
fi fi
##########################################
# avx512f optimization requirement check
#
# There is no point enabling this if cpuid.h is not usable,
# since we won't be able to select the new routines.
# by default, it is turned off.
# if user explicitly want to enable it, check environment
if test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then
cat > $TMPC << EOF
#pragma GCC push_options
#pragma GCC target("avx512f")
#include <cpuid.h>
#include <immintrin.h>
static int bar(void *a) {
__m512i x = *(__m512i *)a;
return _mm512_test_epi64_mask(x, x);
}
int main(int argc, char *argv[])
{
return bar(argv[0]);
}
EOF
if ! compile_object "" ; then
avx512f_opt="no"
fi
else
avx512f_opt="no"
fi
######################################## ########################################
# check if __[u]int128_t is usable. # check if __[u]int128_t is usable.
@ -6717,6 +6753,7 @@ echo "libxml2 $libxml2"
echo "tcmalloc support $tcmalloc" echo "tcmalloc support $tcmalloc"
echo "jemalloc support $jemalloc" echo "jemalloc support $jemalloc"
echo "avx2 optimization $avx2_opt" echo "avx2 optimization $avx2_opt"
echo "avx512f optimization $avx512f_opt"
echo "replication support $replication" echo "replication support $replication"
echo "VxHS block device $vxhs" echo "VxHS block device $vxhs"
echo "bochs support $bochs" echo "bochs support $bochs"
@ -7268,6 +7305,10 @@ if test "$avx2_opt" = "yes" ; then
echo "CONFIG_AVX2_OPT=y" >> $config_host_mak echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
fi fi
if test "$avx512f_opt" = "yes" ; then
echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak
fi
if test "$lzo" = "yes" ; then if test "$lzo" = "yes" ; then
echo "CONFIG_LZO=y" >> $config_host_mak echo "CONFIG_LZO=y" >> $config_host_mak
fi fi