kfrlib / kfr

Fast, modern C++ DSP framework, FFT, Sample Rate Conversion, FIR/IIR/Biquad Filters (SSE, AVX, AVX-512, ARM NEON)
https://www.kfrlib.com
GNU General Public License v2.0
1.64k stars 252 forks source link

KFR still tries to call avx ntrinsincs without -mavx #166

Closed jcelerier closed 1 year ago

jcelerier commented 1 year ago

Here is my build line: as you can see I pass all the -msse options, but not -mavx. Yet the code still stries to call _mm256_blendv_pd which is AVX (and fails as Emscripten only supports 128-bit instructions & this looks like a 256 one given the name

$ /opt/ossia-sdk-wasm/emsdk/upstream/emscripten/em++ -DFMT_HEADER_ONLY=1 -DKFR_DFT_NPo2 -DQT_DISABLE_DEPRECATED_BEFORE=0x050800 -DQT_NO_KEYWORDS -I/build/3rdparty/libossia/src/kfr_build -I/__w/score/score/3rdparty/libossia/3rdparty/kfr -I/__w/score/score/3rdparty/libossia/3rdparty/kfr/include -std=c++20 -pthread -O3 -ffast-math -msimd128 -msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -O3 -DNDEBUG -fPIC -fopenmp-simd -ffp-contract=fast -mstackrealign -Wno-c++1z-extensions -Wno-psabi -mno-sse -msse4.2 -mavx -std=gnu++17 -MD -MT 3rdparty/libossia/src/kfr_build/CMakeFiles/kfr_dft.dir/Unity/unity_0_cxx.cxx.o -MF 3rdparty/libossia/src/kfr_build/CMakeFiles/kfr_dft.dir/Unity/unity_0_cxx.cxx.o.d -o 3rdparty/libossia/src/kfr_build/CMakeFiles/kfr_dft.dir/Unity/unity_0_cxx.cxx.o -c /build/3rdparty/libossia/src/kfr_build/CMakeFiles/kfr_dft.dir/Unity/unity_0_cxx.cxx
clang-15: warning: argument unused during compilation: '-mno-sse' [-Wunused-command-line-argument]
In file included from /build/3rdparty/libossia/src/kfr_build/CMakeFiles/kfr_dft.dir/Unity/unity_0_cxx.cxx:3:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/convolution-impl.cpp:26:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../convolution.hpp:35:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../cache.hpp:28:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../fft.hpp:32:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/sin_cos.hpp:28:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/impl/sin_cos.hpp:25:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/impl/../../math/abs.hpp:28:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/impl/abs.hpp:25:
In file included from /__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/impl/../../math/select.hpp:28:
/__w/score/score/3rdparty/libossia/3rdparty/kfr/include/kfr/dft/impl/../../math/impl/select.hpp:82:12: error: use of undeclared identifier '_mm256_blendv_pd'; did you mean '_mm_blendv_pd'?
    return _mm256_blendv_pd(y.v, x.v, m.v);
           ^~~~~~~~~~~~~~~~
           _mm_blendv_pd
jcelerier commented 1 year ago

bad mistake on my part, sorry