Disable autovectorization on wasm (#86038)
authorKatelyn Gadd <kg@luminance.org>
Wed, 10 May 2023 16:28:21 +0000 (09:28 -0700)
committerGitHub <noreply@github.com>
Wed, 10 May 2023 16:28:21 +0000 (09:28 -0700)
7c75cbf added the -msimd128 flag to cmakelists so that the interpreter could use wasm vector intrinsics. That option appears to imply enabling all sorts of auto-vectorization, which may be responsible for the regressions in dotnet/perf-autofiling-issues#17570

src/mono/CMakeLists.txt

index 5ff644b..dde6655 100644 (file)
@@ -270,7 +270,14 @@ elseif(CLR_CMAKE_HOST_OS STREQUAL "emscripten")
   add_compile_options(-Wno-strict-prototypes)
   add_compile_options(-Wno-unused-but-set-variable)
   add_compile_options(-Wno-single-bit-bitfield-constant-conversion)
+  # Allow using WASM simd intrinsics in the interpreter
   add_compile_options(-msimd128)
+  # Disable autovectorization (it is automatically turned on by msimd128)
+  add_compile_options(-disable-loop-vectorization)
+  add_compile_options(-disable-vectorization)
+  add_compile_options(-fno-vectorize)
+  add_compile_options(-fno-tree-vectorize)
+  add_compile_options(-fno-slp-vectorize)
   set(DISABLE_EXECUTABLES 1)
   # FIXME: Is there a cmake option for this ?
   set(DISABLE_SHARED_LIBS 1)