From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47314) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b85Fi-0004UE-Dm for qemu-devel@nongnu.org; Wed, 01 Jun 2016 08:28:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b85Fd-0000j3-CO for qemu-devel@nongnu.org; Wed, 01 Jun 2016 08:28:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:39236) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b85Fd-0000iS-6V for qemu-devel@nongnu.org; Wed, 01 Jun 2016 08:27:57 -0400 Date: Wed, 1 Jun 2016 13:27:52 +0100 From: "Dr. David Alan Gilbert" Message-ID: <20160601122752.GA2310@work-vm> References: <1464780501-28080-1-git-send-email-dgilbert@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1464780501-28080-1-git-send-email-dgilbert@redhat.com> Subject: Re: [Qemu-devel] [PATCH] Improve avx2 configure test List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, liang.z.li@intel.com, pbonzini@redhat.com, peter.maydell@linaro.org Cc: amit.shah@redhat.com Actually, skip this version, I've got a simple change that also rolls in the gcc 4.9 check (just removing the "-mavx2") - I'll post that after lunch. Dave * Dr. David Alan Gilbert (git) (dgilbert@redhat.com) wrote: > From: "Dr. David Alan Gilbert" > > When configured with --extra-cflags=-O2 gcc optimised out the test > and the readelf failed the check leaving avx2 disabled. > > The fix for that is to remove 'static' on 'foo'. > At the same time, I thought it best to be more paranoid on > checking whether both the compiler and assembler could actually > use avx2, so make a couple of bogus calls to the the mm256 > intrinsics. > > (I also wondered about trying to replicate the gcc4.9 test that's > used in cutils.c - but I'd prefer to know the exact failure mode rather > than test for the version). > > Signed-off-by: Dr. David Alan Gilbert > --- > configure | 13 ++++++++++--- > 1 file changed, 10 insertions(+), 3 deletions(-) > > diff --git a/configure b/configure > index b5aab72..13fabc3 100755 > --- a/configure > +++ b/configure > @@ -1781,10 +1781,17 @@ fi > # avx2 optimization requirement check > > cat > $TMPC << EOF > -static void bar(void) {} > +#pragma GCC push_options > +#pragma GCC target("avx2") > +#include > +#include > + > +static int bar(void *a) { > + return _mm256_movemask_epi8(_mm256_cmpeq_epi8(*(__m256i *)a, (__m256i){0})); > +} > static void *bar_ifunc(void) {return (void*) bar;} > -static void foo(void) __attribute__((ifunc("bar_ifunc"))); > -int main(void) { foo(); return 0; } > +int foo(void *a) __attribute__((ifunc("bar_ifunc"))); > +int main(int argc, char *argv[]) { return foo(argv[0]);} > EOF > if compile_prog "-mavx2" "" ; then > if readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then > -- > 2.7.4 > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK