aboutsummaryrefslogtreecommitdiffstats
path: root/core/mixer
diff options
context:
space:
mode:
Diffstat (limited to 'core/mixer')
-rw-r--r--core/mixer/mixer_neon.cpp4
-rw-r--r--core/mixer/mixer_sse.cpp5
-rw-r--r--core/mixer/mixer_sse2.cpp4
-rw-r--r--core/mixer/mixer_sse41.cpp4
4 files changed, 17 insertions, 0 deletions
diff --git a/core/mixer/mixer_neon.cpp b/core/mixer/mixer_neon.cpp
index 3c7ddd4e..cc6dd71d 100644
--- a/core/mixer/mixer_neon.cpp
+++ b/core/mixer/mixer_neon.cpp
@@ -16,6 +16,10 @@ struct BSincTag;
struct FastBSincTag;
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__ARM_NEON)
+#pragma GCC target("fpu=neon")
+#endif
+
namespace {
inline float32x4_t set_f4(float l0, float l1, float l2, float l3)
diff --git a/core/mixer/mixer_sse.cpp b/core/mixer/mixer_sse.cpp
index ff722c19..f21ec227 100644
--- a/core/mixer/mixer_sse.cpp
+++ b/core/mixer/mixer_sse.cpp
@@ -15,6 +15,11 @@ struct BSincTag;
struct FastBSincTag;
+/* SSE2 is required for any SSE support. */
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__SSE2__)
+#pragma GCC target("sse2")
+#endif
+
namespace {
constexpr uint FracPhaseBitDiff{MixerFracBits - BSincPhaseBits};
diff --git a/core/mixer/mixer_sse2.cpp b/core/mixer/mixer_sse2.cpp
index 69fac250..a93a33f9 100644
--- a/core/mixer/mixer_sse2.cpp
+++ b/core/mixer/mixer_sse2.cpp
@@ -30,6 +30,10 @@ struct SSE2Tag;
struct LerpTag;
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__SSE2__)
+#pragma GCC target("sse2")
+#endif
+
template<>
const float *Resample_<LerpTag,SSE2Tag>(const InterpState*, const float *RESTRICT src, uint frac,
uint increment, const al::span<float> dst)
diff --git a/core/mixer/mixer_sse41.cpp b/core/mixer/mixer_sse41.cpp
index cacc9e64..f7839b78 100644
--- a/core/mixer/mixer_sse41.cpp
+++ b/core/mixer/mixer_sse41.cpp
@@ -31,6 +31,10 @@ struct SSE4Tag;
struct LerpTag;
+#if defined(__GNUC__) && !defined(__clang__) && !defined(__SSE4_1__)
+#pragma GCC target("sse4.1")
+#endif
+
template<>
const float *Resample_<LerpTag,SSE4Tag>(const InterpState*, const float *RESTRICT src, uint frac,
uint increment, const al::span<float> dst)