[1/2] net/ice: fix build error on lower version GCC

Message ID 20201103125629.56030-2-leyi.rong@intel.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series fix build error on lower version GCC |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Leyi Rong Nov. 3, 2020, 12:56 p.m. UTC
  Fix the build error when -march=skylake-avx512 is not supported on
lower version GCC.

Fixes: ef5d52dae5e2 ("net/ice: add AVX512 vector path")

Signed-off-by: Leyi Rong <leyi.rong@intel.com>
---
 drivers/net/ice/meson.build | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)
  

Comments

Bruce Richardson Nov. 3, 2020, 1:28 p.m. UTC | #1
On Tue, Nov 03, 2020 at 08:56:28PM +0800, Leyi Rong wrote:
> Fix the build error when -march=skylake-avx512 is not supported on
> lower version GCC.
> 
> Fixes: ef5d52dae5e2 ("net/ice: add AVX512 vector path")
> 
> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> ---
>  drivers/net/ice/meson.build | 21 +++++++++++++++------
>  1 file changed, 15 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build
> index 7d54a49236..ec8933aa1a 100644
> --- a/drivers/net/ice/meson.build
> +++ b/drivers/net/ice/meson.build
> @@ -46,12 +46,21 @@ if arch_subdir == 'x86'
>  
>  	if ice_avx512_cpu_support == true or ice_avx512_cc_support == true
>  		cflags += ['-DCC_AVX512_SUPPORT']
> -		ice_avx512_lib = static_library('ice_avx512_lib',
> -				      'ice_rxtx_vec_avx512.c',
> -				      dependencies: [static_rte_ethdev,
> -					static_rte_kvargs, static_rte_hash],
> -				      include_directories: includes,
> -				      c_args: [cflags, '-march=skylake-avx512', '-mavx512f', '-mavx512bw'])
> +		if cc.has_argument('-march=skylake-avx512')
> +			ice_avx512_lib = static_library('ice_avx512_lib',
> +					      'ice_rxtx_vec_avx512.c',
> +					      dependencies: [static_rte_ethdev,
> +						static_rte_kvargs, static_rte_hash],
> +					      include_directories: includes,
> +					      c_args: [cflags, '-march=skylake-avx512', '-mavx512f', '-mavx512bw'])
> +		else
> +			ice_avx512_lib = static_library('ice_avx512_lib',
> +					      'ice_rxtx_vec_avx512.c',
> +					      dependencies: [static_rte_ethdev,
> +						static_rte_kvargs, static_rte_hash],
> +					      include_directories: includes,
> +					      c_args: [cflags, '-mavx512f', '-mavx512bw'])
> +		endif

Rather than duplicating the whole static_library call, you can just do:
	avx512_cflags = [cflags, '-mavx512f', '-mavx512bw']
	if cc.has_argument('-march=skylake-avx512')
		avx512_cflags += '-march=skylake-avx512'
	endif

and then use avx512_cflags inside a single static_library call. Much
shorter code.

/Bruce

>  		objs += ice_avx512_lib.extract_objects('ice_rxtx_vec_avx512.c')
>  	endif
>  endif
> -- 
> 2.17.1
>
  
Leyi Rong Nov. 3, 2020, 2:13 p.m. UTC | #2
> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Tuesday, November 3, 2020 9:28 PM
> To: Rong, Leyi <leyi.rong@intel.com>
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yigit, Ferruh <ferruh.yigit@intel.com>;
> dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH 1/2] net/ice: fix build error on lower version GCC
> 
> On Tue, Nov 03, 2020 at 08:56:28PM +0800, Leyi Rong wrote:
> > Fix the build error when -march=skylake-avx512 is not supported on
> > lower version GCC.
> >
> > Fixes: ef5d52dae5e2 ("net/ice: add AVX512 vector path")
> >
> > Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> > ---
> >  drivers/net/ice/meson.build | 21 +++++++++++++++------
> >  1 file changed, 15 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build
> > index 7d54a49236..ec8933aa1a 100644
> > --- a/drivers/net/ice/meson.build
> > +++ b/drivers/net/ice/meson.build
> > @@ -46,12 +46,21 @@ if arch_subdir == 'x86'
> >
> >  	if ice_avx512_cpu_support == true or ice_avx512_cc_support == true
> >  		cflags += ['-DCC_AVX512_SUPPORT']
> > -		ice_avx512_lib = static_library('ice_avx512_lib',
> > -				      'ice_rxtx_vec_avx512.c',
> > -				      dependencies: [static_rte_ethdev,
> > -					static_rte_kvargs, static_rte_hash],
> > -				      include_directories: includes,
> > -				      c_args: [cflags, '-march=skylake-avx512', '-
> mavx512f', '-mavx512bw'])
> > +		if cc.has_argument('-march=skylake-avx512')
> > +			ice_avx512_lib = static_library('ice_avx512_lib',
> > +					      'ice_rxtx_vec_avx512.c',
> > +					      dependencies: [static_rte_ethdev,
> > +						static_rte_kvargs,
> static_rte_hash],
> > +					      include_directories: includes,
> > +					      c_args: [cflags, '-march=skylake-
> avx512', '-mavx512f', '-mavx512bw'])
> > +		else
> > +			ice_avx512_lib = static_library('ice_avx512_lib',
> > +					      'ice_rxtx_vec_avx512.c',
> > +					      dependencies: [static_rte_ethdev,
> > +						static_rte_kvargs,
> static_rte_hash],
> > +					      include_directories: includes,
> > +					      c_args: [cflags, '-mavx512f', '-
> mavx512bw'])
> > +		endif
> 
> Rather than duplicating the whole static_library call, you can just do:
> 	avx512_cflags = [cflags, '-mavx512f', '-mavx512bw']
> 	if cc.has_argument('-march=skylake-avx512')
> 		avx512_cflags += '-march=skylake-avx512'
> 	endif
> 
> and then use avx512_cflags inside a single static_library call. Much shorter code.
> 
> /Bruce
> 

Many thanks~
Fixed in v2 patches.

Leyi
> >  		objs += ice_avx512_lib.extract_objects('ice_rxtx_vec_avx512.c')
> >  	endif
> >  endif
> > --
> > 2.17.1
> >
  

Patch

diff --git a/drivers/net/ice/meson.build b/drivers/net/ice/meson.build
index 7d54a49236..ec8933aa1a 100644
--- a/drivers/net/ice/meson.build
+++ b/drivers/net/ice/meson.build
@@ -46,12 +46,21 @@  if arch_subdir == 'x86'
 
 	if ice_avx512_cpu_support == true or ice_avx512_cc_support == true
 		cflags += ['-DCC_AVX512_SUPPORT']
-		ice_avx512_lib = static_library('ice_avx512_lib',
-				      'ice_rxtx_vec_avx512.c',
-				      dependencies: [static_rte_ethdev,
-					static_rte_kvargs, static_rte_hash],
-				      include_directories: includes,
-				      c_args: [cflags, '-march=skylake-avx512', '-mavx512f', '-mavx512bw'])
+		if cc.has_argument('-march=skylake-avx512')
+			ice_avx512_lib = static_library('ice_avx512_lib',
+					      'ice_rxtx_vec_avx512.c',
+					      dependencies: [static_rte_ethdev,
+						static_rte_kvargs, static_rte_hash],
+					      include_directories: includes,
+					      c_args: [cflags, '-march=skylake-avx512', '-mavx512f', '-mavx512bw'])
+		else
+			ice_avx512_lib = static_library('ice_avx512_lib',
+					      'ice_rxtx_vec_avx512.c',
+					      dependencies: [static_rte_ethdev,
+						static_rte_kvargs, static_rte_hash],
+					      include_directories: includes,
+					      c_args: [cflags, '-mavx512f', '-mavx512bw'])
+		endif
 		objs += ice_avx512_lib.extract_objects('ice_rxtx_vec_avx512.c')
 	endif
 endif