[v2] net/i40e: fix avx code error on MinGW
Checks
Commit Message
Adds extra cflags '-fno-asynchronous-unwind-tables'
to avoid the MinGW build error:
Error: invalid register for .seh_savexmm
Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
Signed-off-by: Leyi Rong <leyi.rong@intel.com>
---
drivers/net/i40e/meson.build | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Comments
On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
> Adds extra cflags '-fno-asynchronous-unwind-tables'
> to avoid the MinGW build error:
> Error: invalid register for .seh_savexmm
>
> Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
>
> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux, I
observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it that this
option somehow affects GCC inlining heuristics. Similar issue existed in
librte_acl (at least a year ago win GCC 6, I believe), where GCC generated
incorrect code unless certain functions had been inlined (caught by test
app). No an AVX expert, just my 2c.
> -----Original Message-----
> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> Sent: Wednesday, February 3, 2021 7:08 AM
> To: Rong, Leyi <leyi.rong@intel.com>
> Cc: david.marchand@redhat.com; Zhang, Qi Z <qi.z.zhang@intel.com>; Yigit,
> Ferruh <ferruh.yigit@intel.com>; thomas@monjalon.net; Richardson, Bruce
> <bruce.richardson@intel.com>; talshn@nvidia.com; Kadam, Pallavi
> <pallavi.kadam@intel.com>; Menon, Ranjit <ranjit.menon@intel.com>; Xing,
> Beilei <beilei.xing@intel.com>; aconole@redhat.com; dev@dpdk.org;
> ci@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix avx code error on MinGW
>
> On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
> > Adds extra cflags '-fno-asynchronous-unwind-tables'
> > to avoid the MinGW build error:
> > Error: invalid register for .seh_savexmm
> >
> > Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
> >
> > Signed-off-by: Leyi Rong <leyi.rong@intel.com>
>
> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
>
> Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux, I
> observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it that this
> option somehow affects GCC inlining heuristics. Similar issue existed in
> librte_acl (at least a year ago win GCC 6, I believe), where GCC generated
> incorrect code unless certain functions had been inlined (caught by test app).
> No an AVX expert, just my 2c.
Applied to dpdk-next-net-intel.
Thanks
Qi
On 2/4/2021 10:41 AM, Zhang, Qi Z wrote:
>
>
>> -----Original Message-----
>> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
>> Sent: Wednesday, February 3, 2021 7:08 AM
>> To: Rong, Leyi <leyi.rong@intel.com>
>> Cc: david.marchand@redhat.com; Zhang, Qi Z <qi.z.zhang@intel.com>; Yigit,
>> Ferruh <ferruh.yigit@intel.com>; thomas@monjalon.net; Richardson, Bruce
>> <bruce.richardson@intel.com>; talshn@nvidia.com; Kadam, Pallavi
>> <pallavi.kadam@intel.com>; Menon, Ranjit <ranjit.menon@intel.com>; Xing,
>> Beilei <beilei.xing@intel.com>; aconole@redhat.com; dev@dpdk.org;
>> ci@dpdk.org
>> Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix avx code error on MinGW
>>
>> On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
>>> Adds extra cflags '-fno-asynchronous-unwind-tables'
>>> to avoid the MinGW build error:
>>> Error: invalid register for .seh_savexmm
>>>
>>> Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
>>>
>>> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
>>
>> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
>>
>> Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux, I
>> observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it that this
>> option somehow affects GCC inlining heuristics. Similar issue existed in
>> librte_acl (at least a year ago win GCC 6, I believe), where GCC generated
>> incorrect code unless certain functions had been inlined (caught by test app).
>> No an AVX expert, just my 2c.
>
> Applied to dpdk-next-net-intel.
>
Hi Thomas, David,
Do you prefer to get this directly to the main repo, since it is fixing the
windows build?
04/02/2021 13:36, Ferruh Yigit:
> On 2/4/2021 10:41 AM, Zhang, Qi Z wrote:
> > From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> >> On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
> >>> Adds extra cflags '-fno-asynchronous-unwind-tables'
> >>> to avoid the MinGW build error:
> >>> Error: invalid register for .seh_savexmm
> >>>
> >>> Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
> >>>
> >>> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> >>
> >> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> >>
> >> Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux, I
> >> observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it that this
> >> option somehow affects GCC inlining heuristics. Similar issue existed in
> >> librte_acl (at least a year ago win GCC 6, I believe), where GCC generated
> >> incorrect code unless certain functions had been inlined (caught by test app).
> >> No an AVX expert, just my 2c.
> >
> > Applied to dpdk-next-net-intel.
> >
>
> Hi Thomas, David,
>
> Do you prefer to get this directly to the main repo, since it is fixing the
> windows build?
Given it will be pulled shortly, I think it's OK through next-net.
On Thu, Feb 4, 2021 at 1:36 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> On 2/4/2021 10:41 AM, Zhang, Qi Z wrote:
> >
> >
> >> -----Original Message-----
> >> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> >> Sent: Wednesday, February 3, 2021 7:08 AM
> >> To: Rong, Leyi <leyi.rong@intel.com>
> >> Cc: david.marchand@redhat.com; Zhang, Qi Z <qi.z.zhang@intel.com>; Yigit,
> >> Ferruh <ferruh.yigit@intel.com>; thomas@monjalon.net; Richardson, Bruce
> >> <bruce.richardson@intel.com>; talshn@nvidia.com; Kadam, Pallavi
> >> <pallavi.kadam@intel.com>; Menon, Ranjit <ranjit.menon@intel.com>; Xing,
> >> Beilei <beilei.xing@intel.com>; aconole@redhat.com; dev@dpdk.org;
> >> ci@dpdk.org
> >> Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix avx code error on MinGW
> >>
> >> On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
> >>> Adds extra cflags '-fno-asynchronous-unwind-tables'
> >>> to avoid the MinGW build error:
> >>> Error: invalid register for .seh_savexmm
> >>>
> >>> Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
> >>>
> >>> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> >>
> >> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> >>
> >> Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux, I
> >> observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it that this
> >> option somehow affects GCC inlining heuristics. Similar issue existed in
> >> librte_acl (at least a year ago win GCC 6, I believe), where GCC generated
> >> incorrect code unless certain functions had been inlined (caught by test app).
> >> No an AVX expert, just my 2c.
> >
> > Applied to dpdk-next-net-intel.
> >
>
> Hi Thomas, David,
>
> Do you prefer to get this directly to the main repo, since it is fixing the
> windows build?
I have no issue with the main branch for mingw.
The windows builds at UNH seem unavailable, so we can wait for the
next-net merge.
Hi All,
The jobs for Windows compile are running, so it may just be the patch
hasn't caught up in the queue.
Cheers,
Lincoln
On Thu, Feb 4, 2021 at 8:43 AM David Marchand <david.marchand@redhat.com>
wrote:
> On Thu, Feb 4, 2021 at 1:36 PM Ferruh Yigit <ferruh.yigit@intel.com>
> wrote:
> >
> > On 2/4/2021 10:41 AM, Zhang, Qi Z wrote:
> > >
> > >
> > >> -----Original Message-----
> > >> From: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> > >> Sent: Wednesday, February 3, 2021 7:08 AM
> > >> To: Rong, Leyi <leyi.rong@intel.com>
> > >> Cc: david.marchand@redhat.com; Zhang, Qi Z <qi.z.zhang@intel.com>;
> Yigit,
> > >> Ferruh <ferruh.yigit@intel.com>; thomas@monjalon.net; Richardson,
> Bruce
> > >> <bruce.richardson@intel.com>; talshn@nvidia.com; Kadam, Pallavi
> > >> <pallavi.kadam@intel.com>; Menon, Ranjit <ranjit.menon@intel.com>;
> Xing,
> > >> Beilei <beilei.xing@intel.com>; aconole@redhat.com; dev@dpdk.org;
> > >> ci@dpdk.org
> > >> Subject: Re: [dpdk-dev] [PATCH v2] net/i40e: fix avx code error on
> MinGW
> > >>
> > >> On Tue, 2 Feb 2021 22:32:58 +0800, Leyi Rong wrote:
> > >>> Adds extra cflags '-fno-asynchronous-unwind-tables'
> > >>> to avoid the MinGW build error:
> > >>> Error: invalid register for .seh_savexmm
> > >>>
> > >>> Fixes: 5c38c33f7880 ("net/i40e: disable AVX512 with MinGW")
> > >>>
> > >>> Signed-off-by: Leyi Rong <leyi.rong@intel.com>
> > >>
> > >> Tested-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
> > >>
> > >> Re: -fno-asynchronous-unwind-tables, when cross-compiling from Linux,
> I
> > >> observe bit-to-bit identical i40e_rxtx_vec_avx512.c.obj. My guess it
> that this
> > >> option somehow affects GCC inlining heuristics. Similar issue existed
> in
> > >> librte_acl (at least a year ago win GCC 6, I believe), where GCC
> generated
> > >> incorrect code unless certain functions had been inlined (caught by
> test app).
> > >> No an AVX expert, just my 2c.
> > >
> > > Applied to dpdk-next-net-intel.
> > >
> >
> > Hi Thomas, David,
> >
> > Do you prefer to get this directly to the main repo, since it is fixing
> the
> > windows build?
>
> I have no issue with the main branch for mingw.
> The windows builds at UNH seem unavailable, so we can wait for the
> next-net merge.
>
>
> --
> David Marchand
>
>
@@ -28,6 +28,10 @@ includes += include_directories('base')
if arch_subdir == 'x86'
sources += files('i40e_rxtx_vec_sse.c')
+ if is_windows and cc.get_id() != 'clang'
+ cflags += ['-fno-asynchronous-unwind-tables']
+ endif
+
# compile AVX2 version if either:
# a. we have AVX supported in minimum instruction set baseline
# b. it's not minimum instruction set, but supported by compiler
@@ -54,10 +58,6 @@ if arch_subdir == 'x86'
cc.has_argument('-mavx512f') and
cc.has_argument('-mavx512bw'))
- if is_windows and cc.get_id() != 'clang'
- i40e_avx512_cc_support = false
- endif
-
if i40e_avx512_cpu_support == true or i40e_avx512_cc_support == true
cflags += ['-DCC_AVX512_SUPPORT']
avx512_args = [cflags, '-mavx512f', '-mavx512bw']