[1/2] net/ice: fix build error on lower version GCC
Checks
Commit Message
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
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
>
> -----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
> >
@@ -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