From fd4f878d740cdb428954e278a520932647f51128 Mon Sep 17 00:00:00 2001 From: falkTX Date: Sat, 9 Oct 2021 23:19:01 +0100 Subject: [PATCH] NEON compatibility stuff Signed-off-by: falkTX --- .gitmodules | 3 +++ plugins/Cardinal/Makefile | 7 ++++++- plugins/Cardinal/neon-compat/pmmintrin.h | 19 +++++++++++++++++++ plugins/Cardinal/sse2neon | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 plugins/Cardinal/neon-compat/pmmintrin.h create mode 160000 plugins/Cardinal/sse2neon diff --git a/.gitmodules b/.gitmodules index d3ee55a..6a04d42 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "plugins/Cardinal/mingw-std-threads"] path = plugins/Cardinal/mingw-std-threads url = https://github.com/meganz/mingw-std-threads.git +[submodule "plugins/Cardinal/sse2neon"] + path = plugins/Cardinal/sse2neon + url = https://github.com/DLTcollab/sse2neon.git diff --git a/plugins/Cardinal/Makefile b/plugins/Cardinal/Makefile index 5d105a8..80222dc 100644 --- a/plugins/Cardinal/Makefile +++ b/plugins/Cardinal/Makefile @@ -88,7 +88,8 @@ ifneq ($(MACOS_OR_WINDOWS),true) MACHINE_SUFFIX = -linux endif -CONFIGURE = ./configure --prefix="$(DEP_PATH)" --host=$(TARGET_MACHINE) +# NOTE speex fails to build when neon is enabled +CONFIGURE = ./configure --prefix="$(DEP_PATH)" --host=$(TARGET_MACHINE) --enable-neon=no # -------------------------------------------------------------- # Fix up cmake for windows cross-compilation @@ -145,6 +146,10 @@ BASE_FLAGS += -IRack/dep/oui-blendish BASE_FLAGS += -IRack/dep/pffft BASE_FLAGS += -pthread +ifeq ($(CPU_ARM_OR_AARCH64),true) +BASE_FLAGS += -Ineon-compat +endif + ifeq ($(WINDOWS),true) BASE_FLAGS += -Imingw-compat BUILD_CXX_FLAGS += -Imingw-std-threads diff --git a/plugins/Cardinal/neon-compat/pmmintrin.h b/plugins/Cardinal/neon-compat/pmmintrin.h new file mode 100644 index 0000000..b1ba00b --- /dev/null +++ b/plugins/Cardinal/neon-compat/pmmintrin.h @@ -0,0 +1,19 @@ +#pragma once + +#ifdef NDEBUG +# undef DEBUG +#endif + +#include "../sse2neon/sse2neon.h" + +static inline +void __builtin_ia32_pause() +{ + __asm__ __volatile__("isb\n"); +} + +static inline +uint32_t _mm_getcsr() +{ + return 0; +} diff --git a/plugins/Cardinal/sse2neon b/plugins/Cardinal/sse2neon new file mode 160000 index 0000000..be721a9 --- /dev/null +++ b/plugins/Cardinal/sse2neon @@ -0,0 +1 @@ +Subproject commit be721a98e7829ce5824a53da78d8210c024ba6c0