linbox-team/fflas-ffpack

make check failed when fflas-ffpack is configured without SIMD instructions

Closed this issue · 2 comments

If fflas-ffpack is configure without SIMD instructions

$ ./configure --disable-sse --disable-sse2 --disable-sse3 --disable-ssse3 --disable-sse41 --disable-sse42 --disable-avx --disable-avx2 --disable-avx512f --disable-avx512dq --disable-fma --disable-fma4```
...
-----------------------------------------------
     START  FFLAS-FFPACK CONFIG                
-----------------------------------------------
checking for OpenMP... yes
Detecting SIMD instruction set
SSE disabled
SSE2 disabled
SSE3 disabled
SSSE3 disabled
SSE4.1 disabled
SSE4.2 disabled
AVX disabled
AVX2 disabled
AVX512F disabled
AVX512DQ disabled
FMA3 disabled
FMA4 disabled
...

the command make check failed at the compilation of the first binary (test-fdot) with the following error

../fflas-ffpack/fflas/fflas_fadd.inl:351:24: error: ‘addp’ is not a member of ‘FFLAS::vectorised’

More precisely, the same error is obtain with

$ ./configure --disable-sse41 --disable-sse42 --disable-avx --disable-avx2 --disable-fma --disable-fma4
...
-----------------------------------------------
     START  FFLAS-FFPACK CONFIG                
-----------------------------------------------
checking for OpenMP... yes
Detecting SIMD instruction set
SSE enabled
SSE2 enabled
SSE3 enabled
SSSE3 enabled
SSE4.1 disabled
SSE4.2 disabled
AVX disabled
AVX2 disabled
AVX512F disabled
AVX512DQ disabled
FMA3 disabled
FMA4 disabled
...

but if any of the --disable-* parameter of the above command line is removed at configure, the compilation works.

Info:

  • givaro: from git, commit d0cab0b
  • fflas-ffpack: from git, commit 3f4e366
  • cpu: Intel Core I5 with SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, FMA3

After looking at the code, it seems that the problem is deeper that I thought. The detection and use of SIMD instructions in fflas-ffpack (and givaro) is weird. I will open another ticket to discuss it.

Fixed by #185