diff --git a/Source/Engine/Serialization/Json.h b/Source/Engine/Serialization/Json.h index d691085f3..6f300f3ae 100644 --- a/Source/Engine/Serialization/Json.h +++ b/Source/Engine/Serialization/Json.h @@ -5,7 +5,9 @@ #include "Engine/Core/Types/String.h" #include "Engine/Core/Types/StringView.h" -#if PLATFORM_SIMD_SSE4_2 +#if PLATFORM_WEB +#define RAPIDJSON_SSE2 +#elif PLATFORM_SIMD_SSE4_2 #define RAPIDJSON_SSE42 #elif PLATFORM_SIMD_SSE2 #define RAPIDJSON_SSE2 diff --git a/Source/Tools/Flax.Build/Platforms/Web/WebToolchain.cs b/Source/Tools/Flax.Build/Platforms/Web/WebToolchain.cs index 115c67fed..b10a3b272 100644 --- a/Source/Tools/Flax.Build/Platforms/Web/WebToolchain.cs +++ b/Source/Tools/Flax.Build/Platforms/Web/WebToolchain.cs @@ -95,7 +95,7 @@ namespace Flax.Build.Platforms options.CompileEnv.PreprocessorDefinitions.Add("PLATFORM_UNIX"); options.CompileEnv.PreprocessorDefinitions.Add("__EMSCRIPTEN__"); options.CompileEnv.EnableExceptions = false; - options.CompileEnv.CpuArchitecture = CpuArchitecture.None; // TODO: try SIMD support in Emscripten + options.CompileEnv.CpuArchitecture = CpuArchitecture.SSE4_2; } private void AddSharedArgs(List args, BuildOptions options, bool debugInformation, bool optimization) @@ -129,6 +129,27 @@ namespace Flax.Build.Platforms else args.Add("-fno-exceptions"); + if (options.CompileEnv.CpuArchitecture != CpuArchitecture.None) + args.Add("-msimd128 -mno-nontrapping-fptoint"); + switch (options.CompileEnv.CpuArchitecture) + { + case CpuArchitecture.AVX: + args.Add("-mavx"); + break; + case CpuArchitecture.AVX2: + args.Add("-mavx2"); + break; + case CpuArchitecture.SSE2: + args.Add("-msse2"); + break; + case CpuArchitecture.SSE4_2: + args.Add("-msse4.2"); + break; + case CpuArchitecture.NEON: + args.Add("-mfpu=neon"); + break; + } + if (options.LinkEnv.LinkTimeCodeGeneration) args.Add("-flto");