aboutsummaryrefslogtreecommitdiffstats
path: root/core/mixer/mixer_sse2.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-12-13 16:49:46 -0800
committerChris Robinson <[email protected]>2020-12-13 16:49:46 -0800
commit783904e414024691d47e76a22d8405ca85dd04f2 (patch)
tree92d692d7f6e86e5ff0f610043d7e162f1405e289 /core/mixer/mixer_sse2.cpp
parent225d42538d2397e2698b9edb359c360dde3d00a8 (diff)
Avoid compiling different sources for different targets
Simplifies configuration and fixes a potential problem with inline functions. Inline functions that fail to inline will have a callable body generated. If such a body is generated with the SSE4 source, for example, it can generate SSE4 instructions. Calls for that function in other sources can then end up calling the SSE4-generated body outside of any CPU capability check.
Diffstat (limited to 'core/mixer/mixer_sse2.cpp')
-rw-r--r--core/mixer/mixer_sse2.cpp4
1 files changed, 4 insertions, 0 deletions
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)