I can't get this library to work in debug mode using GCC 9.
Even compiling the library in release mode and using it in a project compiled in debug mode produces the same errors:
...
/tmp/kfr-4.0.0/include/kfr/io/impl/../../base/../simd/impl/../../base/../simd/impl/backend_generic.hpp:1524:71: error: macro "_mm_shuffle_ps" passed 7 arguments, but takes just 3
1524 | return _mm_shuffle_ps(x, x, shuffle_mask<8, I0, I1, I2, I3>::value);
...
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.1/include/xmmintrin.h:749: note: macro "_mm_shuffle_ps" defined here
749 | #define _mm_shuffle_ps(A, B, MASK) \
...
/tmp/kfr-4.0.0/include/kfr/io/impl/../../base/../simd/impl/../../base/../simd/impl/backend_generic.hpp:1531:63: error: macro "_mm_shuffle_pd" passed 5 arguments, but takes just 3
1531 | return _mm_shuffle_pd(x, x, shuffle_mask<2, I0, I1>::value);
...
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.1/include/emmintrin.h:926: note: macro "_mm_shuffle_pd" defined here
926 | #define _mm_shuffle_pd(A, B, N) \
...
/tmp/kfr-4.0.0/include/kfr/io/impl/../../base/../simd/impl/../../base/../simd/impl/backend_generic.hpp:1524:12: error: ‘_mm_shuffle_ps’ was not declared in this scope
1524 | return _mm_shuffle_ps(x, x, shuffle_mask<8, I0, I1, I2, I3>::value);
...
/tmp/kfr-4.0.0/include/kfr/io/impl/../../base/../simd/impl/../../base/../simd/impl/backend_generic.hpp:1531:12: error: ‘_mm_shuffle_pd’ was not declared in this scope
1531 | return _mm_shuffle_pd(x, x, shuffle_mask<2, I0, I1>::value);
...
It seems that _mm_shuffle_ps and _mm_shuffle_pd being macros the template parameters of shuffle_mask are interpreted as macros parameters. Storing the mask in an intermediate variable would probably solve the issue
I can't get this library to work in debug mode using GCC 9.
Even compiling the library in release mode and using it in a project compiled in debug mode produces the same errors:
It seems that
_mm_shuffle_ps
and_mm_shuffle_pd
being macros the template parameters ofshuffle_mask
are interpreted as macros parameters. Storing the mask in an intermediate variable would probably solve the issue