From: Bernhard Urban Date: Mon, 26 Aug 2019 20:00:06 +0000 (-0400) Subject: [arm64] use opcode emulation for fconv/rconv X-Git-Tag: submit/tizen/20210909.063632~10331^2~5^2~676 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=12088df8e98cc865010f6ba1c95a0a896f5e7e85;p=platform%2Fupstream%2Fdotnet%2Fruntime.git [arm64] use opcode emulation for fconv/rconv LLVM eagerly optimizes constants such as NaN in a way that does not align with .NET behaviour. In the future we can change it so that we only do opcode emulation when LLVM is used. Fixes https://github.com/mono/mono/issues/16411 Commit migrated from https://github.com/mono/mono/commit/475defca4d4d24dc44c660244b645df5f33e20ac --- diff --git a/src/mono/mono/mini/mini-arm64.h b/src/mono/mono/mini/mini-arm64.h index e0c4014..381160e 100644 --- a/src/mono/mono/mini/mini-arm64.h +++ b/src/mono/mono/mini/mini-arm64.h @@ -110,13 +110,14 @@ typedef struct { int thunks_size; } MonoCompileArch; +#define MONO_ARCH_EMULATE_FCONV_TO_U4 1 +#define MONO_ARCH_EMULATE_FCONV_TO_U8 1 #ifdef MONO_ARCH_ILP32 /* For the watch (starting with series 4), a new ABI is introduced: arm64_32. * We can still use the older AOT compiler to produce bitcode, because it's * "offset compatible". However, since it is targeting arm7k, it makes certain * assumptions that we need to align here. */ #define MONO_ARCH_EMULATE_FCONV_TO_I8 1 -#define MONO_ARCH_EMULATE_FCONV_TO_U8 1 #define MONO_ARCH_EMULATE_LCONV_TO_R8 1 #define MONO_ARCH_EMULATE_LCONV_TO_R4 1 #define MONO_ARCH_EMULATE_LCONV_TO_R8_UN 1