[dpdk-dev] [PATCH] net/ice: add AVX512BW flag check both in build and runtime

Bruce Richardson bruce.richardson at intel.com
Tue Oct 27 14:27:50 CET 2020


On Tue, Oct 27, 2020 at 01:12:20PM +0000, Ali Alnubani wrote:
> Hi,
> 
> > -----Original Message-----
> > From: Ferruh Yigit <ferruh.yigit at intel.com>
> > Sent: Tuesday, October 27, 2020 1:57 PM
> > To: Leyi Rong <leyi.rong at intel.com>; qi.z.zhang at intel.com;
> > bruce.richardson at intel.com; wenzhuo.lu at intel.com; Ali Alnubani
> > <alialnu at nvidia.com>; Andrew Rybchenko <arybchenko at solarflare.com>;
> > David Marchand <david.marchand at redhat.com>
> > Cc: dev at dpdk.org
> > Subject: Re: [PATCH] net/ice: add AVX512BW flag check both in build and
> > runtime
> > 
> > On 10/27/2020 10:19 AM, Leyi Rong wrote:
> > > Intrinsic function __mm512_bsrli_epi128 should be used in the
> > > environment which supports AVX512BW, so adds check for this flag.
> > >
> > > Fixes: 5dd3b8f3af34 ("net/ice: add AVX512 vector path")
> > >
> > > Signed-off-by: Leyi Rong <leyi.rong at intel.com>
> > 
> > Squashed into relevant commit in next-net, thanks.
> > 
> > 
> > Andrew, Ali, David,
> > 
> > Can you please confirm the issue is solved in the next-net/main?
> > 
> 
> The build failures in CentOS 7, Ubuntu 18.04 and in OpenSUSE Leap 15.2 no longer reproduce. But we just noticed that Ubuntu 16.04.7 (gcc 5.4.0) is also failing with a different error:
> 
> """
> drivers/net/ice/ice_rxtx_vec_avx512.c:1:0: error: bad value (skylake-avx512) for -march= switch
>  /* SPDX-License-Identifier: BSD-3-Clause
> """
> Which is also caused by "net/ice: add AVX512 vector path".
> 

I think we can drop the -march=skylake-avx512 flag in the build command for
the avx512 file, since specifying the -mavx512f and -mavx512bw should be
enough. Testing in an ubuntu 16.04 VM (which has 5.5 rather than 5.4
compiler, but should be ok), shows that the avx512 instruction set flags
are recognised and enable the isntructions, which the -march one is not.

/Bruce

bruce at ubuntu-1604-vm:~$ gcc -mavx512f -mavx512bw -dM -E - < /dev/null | grep AVX
#define __AVX512F__ 1
#define __AVX512BW__ 1
#define __AVX__ 1
#define __AVX2__ 1
bruce at ubuntu-1604-vm:~$ gcc -march=skylake-avx512 -dM -E - < /dev/null | grep AVX
cc1: error: bad value (skylake-avx512) for -march= switch



More information about the dev mailing list