diff --git a/spa/plugins/support/cpu-x86.c b/spa/plugins/support/cpu-x86.c index 18096df22..78422ecef 100644 --- a/spa/plugins/support/cpu-x86.c +++ b/spa/plugins/support/cpu-x86.c @@ -177,14 +177,22 @@ x86_init(struct impl *impl) return 0; } +#if defined(HAVE_SSE) +#include +#endif + static int x86_zero_denormals(void *object, bool enable) { +#if defined(HAVE_SSE) unsigned int mxcsr; - mxcsr = __builtin_ia32_stmxcsr(); + mxcsr = _mm_getcsr(); if (enable) mxcsr |= 0x8040; else mxcsr &= ~0x8040; - __builtin_ia32_ldmxcsr(mxcsr); + _mm_setcsr(mxcsr); return 0; +#else + return -ENOTSUP; +#endif } diff --git a/spa/plugins/support/meson.build b/spa/plugins/support/meson.build index 0138555b0..1c4540b61 100644 --- a/spa/plugins/support/meson.build +++ b/spa/plugins/support/meson.build @@ -9,9 +9,16 @@ spa_support_sources = [ 'system.c' ] +simd_cargs = [] + +if have_sse + simd_cargs += ['-DHAVE_SSE'] +endif + spa_support_lib = shared_library('spa-support', spa_support_sources, include_directories : [ spa_inc ], + c_args : [ simd_cargs ], dependencies : [ pthread_lib, epoll_shim_dep ], install : true, install_dir : spa_plugindir / 'support')