On 1/20/2021 11:21 PM, Ferruh Yigit wrote:
On 1/20/2021 10:05 AM, Ali Alnubani wrote:
For info, I don't reproduce the compilation issue on my machine.

My build system has been upgraded from fc31 to fc32 so I guess this has
something to do with it.


I can reproduce with (Fedora MinGW 9.2.1-6.fc32), but not with (Fedora MinGW 10.2.1-2.fc33).


First of all, for the patch @Tal provided its link, the windows build and the mingw build errors are different. And the windows build error should be already fixed by a patch that squashed in next-net (https://patches.dpdk.org/patch/86804/).


And for the mingw, I have same result with Ali, I can reproduce with (Fedora MinGW 9.2.1-6.fc32).

But different from the CI, I am getting the error [1] for all following files:
rte_random.c
i40e_rxtx_vec_sse.c
i40e_rxtx_vec_avx512.c
i40e_rxtx_vec_avx2.c
rte_ethdev.c

[1] Error: invalid register for .seh_savexmm


There is a stackoverflow entry for it:
https://stackoverflow.com/questions/43152633/invalid-register-for-seh-savexmm-in-cygwin

If I use '-fno-asynchronous-unwind-tables' as suggested there, the build works fine.

So the problem may not be just 'i40e_rxtx_vec_avx512.c'.


If I change the machine type from 'native' to 'corei7' [2], the build error reduced to only 'i40e_rxtx_vec_avx512.c', so the problem seems happens when avx512 is supported by CPU, in this case compiler seems has a defect. And since for 'i40e_rxtx_vec_avx512.c' the '-march=skylake-avx512' explicitly set can cause the problem seen in all machines.

[2]
 diff --git a/config/x86/cross-mingw b/config/x86/cross-mingw
 index 4c15a7fa2e..7cee238add 100644
 --- a/config/x86/cross-mingw
 +++ b/config/x86/cross-mingw
 @@ -9,5 +9,5 @@ pkgconfig = 'x86_64-w64-mingw32-pkg-config'
  [host_machine]
  system = 'windows'
  cpu_family = 'x86_64'
 -cpu = 'native'
 +cpu = 'corei7'
  endian = 'little'



@Ranjit, @Pallavi,
Are you building using mingw, and if so are you observing same problem?

We usually build using Clang. However, we verify with mingw as well before 
submitting the patch.
As mentioned in the patch [1] comments, we replaced #include x86intrin.h with 
<rte_vect.h> in the file i40e_rxtx_vec_avx2.c
And this helped fixing an error related to conflicting types for '__m_prefethw' 
with Clang on Windows.
I was able to build this patch using Clang as well as mingw.
[1] http://patches.dpdk.org/patch/84770/

I verified patch fix submitted by Rong, Leyi, it builds successfully with Clang.
However, I am getting same error "Error: invalid register for .seh_savexmm" 
using mingw for 'i40e_rxtx_vec_avx512.c' file.

Thanks,
Pallavi

Reply via email to