From d2f7b6b0d46a45be29ebafca0584142219ffe495 Mon Sep 17 00:00:00 2001 From: Johan Lorensson Date: Thu, 19 Mar 2020 04:31:29 +0100 Subject: [PATCH] Mono DISABLE_SIMD define still emits OP codes depending on SIMD support. (#33717) Fix makes sure runtime checks also report that SIMD has been disabled. Returning FALSE from is_simd_supported will turn of MONO_OPT_SIMD and disable all SSE/AVX cpu features will prevent code checking cpu capabilities to emit SIMD instructions. --- src/mono/mono/mini/mini-runtime.c | 5 +++++ src/mono/mono/mini/mini.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index 60d5860..a0ab6c4 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -130,7 +130,12 @@ gboolean mono_use_fast_math = FALSE; // Lists of whitelisted and blacklisted CPU features MonoCPUFeatures mono_cpu_features_enabled = (MonoCPUFeatures)0; + +#ifdef DISABLE_SIMD +MonoCPUFeatures mono_cpu_features_disabled = MONO_CPU_X86_FULL_SSEAVX_COMBINED; +#else MonoCPUFeatures mono_cpu_features_disabled = (MonoCPUFeatures)0; +#endif gboolean mono_use_interpreter = FALSE; const char *mono_interp_opts_string = NULL; diff --git a/src/mono/mono/mini/mini.c b/src/mono/mono/mini/mini.c index e9c35f9..3afab1f 100644 --- a/src/mono/mono/mini/mini.c +++ b/src/mono/mono/mini/mini.c @@ -3049,6 +3049,9 @@ init_backend (MonoBackend *backend) static gboolean is_simd_supported (MonoCompile *cfg) { +#ifdef DISABLE_SIMD + return FALSE; +#endif // FIXME: Clean this up #ifdef TARGET_WASM if ((mini_get_cpu_features (cfg) & MONO_CPU_WASM_SIMD) == 0) -- 2.7.4