From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53255) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aLpQ0-0007qO-4i for qemu-devel@nongnu.org; Wed, 20 Jan 2016 04:51:13 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aLpPv-0003I9-47 for qemu-devel@nongnu.org; Wed, 20 Jan 2016 04:51:12 -0500 Received: from mx1.redhat.com ([209.132.183.28]:47761) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aLpPu-0003I4-Ux for qemu-devel@nongnu.org; Wed, 20 Jan 2016 04:51:07 -0500 References: <1453280742-20718-1-git-send-email-liang.z.li@intel.com> <1453280742-20718-2-git-send-email-liang.z.li@intel.com> From: Paolo Bonzini Message-ID: <569F5883.2090608@redhat.com> Date: Wed, 20 Jan 2016 10:50:59 +0100 MIME-Version: 1.0 In-Reply-To: <1453280742-20718-2-git-send-email-liang.z.li@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v4 1/2] configure: detect ifunc and avx2 attribute List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Liang Li , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, mst@redhat.com, rth7680@gmail.com, dgilbert@redhat.com, quintela@redhat.com, stefanha@redhat.com, amit.shah@redhat.com, rth@twiddle.net On 20/01/2016 10:05, Liang Li wrote: > Detect if the compiler can support the ifun and avx2, if so, set > CONFIG_AVX2_OPT which will be used to turn on the avx2 instruction > optimization. > > Signed-off-by: Liang Li > --- > configure | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/configure b/configure > index 44ac9ab..b7f4661 100755 > --- a/configure > +++ b/configure > @@ -310,6 +310,7 @@ smartcard="" > libusb="" > usb_redir="" > opengl="" > +avx2_opt="" > zlib="yes" > lzo="" > snappy="" > @@ -1827,6 +1828,20 @@ EOF > fi > > ########################################## > +# avx2 optimization requirement check > + > +cat > $TMPC << EOF > +static void bar(void) {} Might be nicer to use "void *" and return an actual function name: static void bar(void) {} static void *bar_ifunc(void) { return (void *)bar; } void foo(void) __attribute__((ifunc("bar_ifunc"))); And also you probably should use "readelf --syms ... | grep IFUNC.*foo" to check that the attribute was not ignored. Paolo > +static void foo(void) __attribute__((ifunc("bar"))); > +int main(void) { foo(); return 0; } > +EOF > +if compile_prog "" "-mavx2" ; then > + avx2_opt="yes" > +else > + avx2_opt="no" > +fi > + > +######################################### > # zlib check > > if test "$zlib" != "no" ; then > @@ -4855,6 +4870,7 @@ echo "bzip2 support $bzip2" > echo "NUMA host support $numa" > echo "tcmalloc support $tcmalloc" > echo "jemalloc support $jemalloc" > +echo "avx2 optimization $avx2_opt" > > if test "$sdl_too_old" = "yes"; then > echo "-> Your SDL version is too old - please upgrade to have SDL support" > @@ -5236,6 +5252,10 @@ if test "$opengl" = "yes" ; then > echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak > fi > > +if test "$avx2_opt" = "yes" ; then > + echo "CONFIG_AVX2_OPT=y" >> $config_host_mak > +fi > + > if test "$lzo" = "yes" ; then > echo "CONFIG_LZO=y" >> $config_host_mak > fi >