diff --git a/src/coreclr/tests/issues.targets b/src/coreclr/tests/issues.targets index eeba754c3ee3aa..29c6c2098e324e 100644 --- a/src/coreclr/tests/issues.targets +++ b/src/coreclr/tests/issues.targets @@ -1232,24 +1232,12 @@ needs triage - - https://github.com/dotnet/runtime/issues/34084 - needs triage needs triage - - https://github.com/dotnet/runtime/issues/34084 - - - https://github.com/dotnet/runtime/issues/34084 - - - https://github.com/dotnet/runtime/issues/34084 - needs triage @@ -1430,12 +1418,6 @@ https://github.com/dotnet/runtime/issues/34380 - - https://github.com/dotnet/runtime/issues/34084 - - - https://github.com/dotnet/runtime/issues/34084 - https://github.com/dotnet/runtime/issues/34378 @@ -1496,12 +1478,6 @@ needs triage - - https://github.com/dotnet/runtime/issues/34084 - - - https://github.com/dotnet/runtime/issues/34084 - https://github.com/dotnet/runtime/issues/34084 diff --git a/src/mono/mono/metadata/jit-icall-reg.h b/src/mono/mono/metadata/jit-icall-reg.h index 125c0b5a8ae923..fb5ac6a1da7ebd 100644 --- a/src/mono/mono/metadata/jit-icall-reg.h +++ b/src/mono/mono/metadata/jit-icall-reg.h @@ -77,7 +77,6 @@ MONO_JIT_ICALL (__emul_fconv_to_i4) \ MONO_JIT_ICALL (__emul_fconv_to_i8) \ MONO_JIT_ICALL (__emul_fconv_to_ovf_i8) \ MONO_JIT_ICALL (__emul_fconv_to_ovf_u8) \ -MONO_JIT_ICALL (__emul_fconv_to_ovf_u8_un) \ MONO_JIT_ICALL (__emul_fconv_to_r4) \ MONO_JIT_ICALL (__emul_fconv_to_u) \ MONO_JIT_ICALL (__emul_fconv_to_u1) \ @@ -115,7 +114,6 @@ MONO_JIT_ICALL (__emul_op_irem_un) \ MONO_JIT_ICALL (__emul_rconv_to_i8) \ MONO_JIT_ICALL (__emul_rconv_to_ovf_i8) \ MONO_JIT_ICALL (__emul_rconv_to_ovf_u8) \ -MONO_JIT_ICALL (__emul_rconv_to_ovf_u8_un) \ MONO_JIT_ICALL (__emul_rconv_to_u4) \ MONO_JIT_ICALL (__emul_rconv_to_u8) \ MONO_JIT_ICALL (__emul_rrem) \ diff --git a/src/mono/mono/mini/decompose.c b/src/mono/mono/mini/decompose.c index bb1916d3b8c061..b36a7ecc255a33 100644 --- a/src/mono/mono/mini/decompose.c +++ b/src/mono/mono/mini/decompose.c @@ -430,18 +430,6 @@ mono_decompose_opcode (MonoCompile *cfg, MonoInst *ins) ins->opcode = OP_FMOVE; break; - case OP_FCONV_TO_OVF_I1_UN: - case OP_FCONV_TO_OVF_I2_UN: - case OP_FCONV_TO_OVF_I4_UN: - case OP_FCONV_TO_OVF_I8_UN: - case OP_FCONV_TO_OVF_U1_UN: - case OP_FCONV_TO_OVF_U2_UN: - case OP_FCONV_TO_OVF_U4_UN: - case OP_FCONV_TO_OVF_I_UN: - case OP_FCONV_TO_OVF_U_UN: - mono_cfg_set_exception_invalid_program (cfg, g_strdup_printf ("float conv.ovf.un opcodes not supported.")); - break; - case OP_IDIV: case OP_IREM: case OP_IDIV_UN: diff --git a/src/mono/mono/mini/jit-icalls.c b/src/mono/mono/mini/jit-icalls.c index 2f3c0f293d9ee7..6a833649fb02be 100644 --- a/src/mono/mono/mini/jit-icalls.c +++ b/src/mono/mono/mini/jit-icalls.c @@ -983,12 +983,6 @@ mono_fconv_ovf_u8 (double v) return res; } -guint64 -mono_fconv_ovf_u8_un (double v) -{ - return mono_fconv_ovf_u8 (v); -} - #ifdef MONO_ARCH_EMULATE_FCONV_TO_I8 gint64 mono_rconv_i8 (float v) @@ -1026,12 +1020,6 @@ mono_rconv_ovf_u8 (float v) return res; } -guint64 -mono_rconv_ovf_u8_un (float v) -{ - return mono_rconv_ovf_u8 (v); -} - #ifdef MONO_ARCH_EMULATE_LCONV_TO_R8 double mono_lconv_to_r8 (gint64 a) diff --git a/src/mono/mono/mini/jit-icalls.h b/src/mono/mono/mini/jit-icalls.h index 8e781ec8d389b0..41ebae89ceee56 100644 --- a/src/mono/mono/mini/jit-icalls.h +++ b/src/mono/mono/mini/jit-icalls.h @@ -86,16 +86,12 @@ ICALL_EXTERN_C gint64 mono_fconv_ovf_i8 (double v); ICALL_EXTERN_C guint64 mono_fconv_ovf_u8 (double v); -ICALL_EXTERN_C guint64 mono_fconv_ovf_u8_un (double v); - ICALL_EXTERN_C gint64 mono_rconv_i8 (float v); ICALL_EXTERN_C gint64 mono_rconv_ovf_i8 (float v); ICALL_EXTERN_C guint64 mono_rconv_ovf_u8 (float v); -ICALL_EXTERN_C guint64 mono_rconv_ovf_u8_un (float v); - ICALL_EXTERN_C double mono_lconv_to_r8 (gint64 a); ICALL_EXTERN_C double mono_conv_to_r8 (gint32 a); diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index 8f953e7891b523..afd2452a32406c 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -1101,6 +1101,9 @@ type_from_op (MonoCompile *cfg, MonoInst *ins, MonoInst *src1, MonoInst *src2) case STACK_I8: ins->opcode = OP_LCONV_TO_R_UN; break; + case STACK_R4: + ins->opcode = OP_RCONV_TO_R8; + break; case STACK_R8: ins->opcode = OP_FMOVE; break; @@ -8430,8 +8433,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b case MONO_CEE_CONV_OVF_I1: case MONO_CEE_CONV_OVF_I2: case MONO_CEE_CONV_OVF_I: - case MONO_CEE_CONV_OVF_U: + case MONO_CEE_CONV_OVF_I1_UN: + case MONO_CEE_CONV_OVF_I2_UN: + case MONO_CEE_CONV_OVF_I4_UN: + case MONO_CEE_CONV_OVF_I8_UN: + case MONO_CEE_CONV_OVF_I_UN: if (sp [-1]->type == STACK_R8 || sp [-1]->type == STACK_R4) { + /* floats are always signed, _UN has no effect */ ADD_UNOP (CEE_CONV_OVF_I8); ADD_UNOP (il_op); } else { @@ -8441,23 +8449,20 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b case MONO_CEE_CONV_OVF_U1: case MONO_CEE_CONV_OVF_U2: case MONO_CEE_CONV_OVF_U4: + case MONO_CEE_CONV_OVF_U: + case MONO_CEE_CONV_OVF_U1_UN: + case MONO_CEE_CONV_OVF_U2_UN: + case MONO_CEE_CONV_OVF_U4_UN: + case MONO_CEE_CONV_OVF_U8_UN: + case MONO_CEE_CONV_OVF_U_UN: if (sp [-1]->type == STACK_R8 || sp [-1]->type == STACK_R4) { + /* floats are always signed, _UN has no effect */ ADD_UNOP (CEE_CONV_OVF_U8); ADD_UNOP (il_op); } else { ADD_UNOP (il_op); } break; - case MONO_CEE_CONV_OVF_I1_UN: - case MONO_CEE_CONV_OVF_I2_UN: - case MONO_CEE_CONV_OVF_I4_UN: - case MONO_CEE_CONV_OVF_I8_UN: - case MONO_CEE_CONV_OVF_U1_UN: - case MONO_CEE_CONV_OVF_U2_UN: - case MONO_CEE_CONV_OVF_U4_UN: - case MONO_CEE_CONV_OVF_U8_UN: - case MONO_CEE_CONV_OVF_I_UN: - case MONO_CEE_CONV_OVF_U_UN: case MONO_CEE_CONV_U2: case MONO_CEE_CONV_U1: case MONO_CEE_CONV_I: diff --git a/src/mono/mono/mini/mini-runtime.c b/src/mono/mono/mini/mini-runtime.c index 1d217a6c9d0184..13d0a05bf377b9 100644 --- a/src/mono/mono/mini/mini-runtime.c +++ b/src/mono/mono/mini/mini-runtime.c @@ -4711,10 +4711,8 @@ register_icalls (void) #endif register_opcode_emulation (OP_FCONV_TO_OVF_I8, __emul_fconv_to_ovf_i8, mono_icall_sig_long_double, mono_fconv_ovf_i8, FALSE); register_opcode_emulation (OP_FCONV_TO_OVF_U8, __emul_fconv_to_ovf_u8, mono_icall_sig_ulong_double, mono_fconv_ovf_u8, FALSE); - register_opcode_emulation (OP_FCONV_TO_OVF_U8_UN, __emul_fconv_to_ovf_u8_un, mono_icall_sig_ulong_double, mono_fconv_ovf_u8_un, FALSE); register_opcode_emulation (OP_RCONV_TO_OVF_I8, __emul_rconv_to_ovf_i8, mono_icall_sig_long_float, mono_rconv_ovf_i8, FALSE); register_opcode_emulation (OP_RCONV_TO_OVF_U8, __emul_rconv_to_ovf_u8, mono_icall_sig_ulong_float, mono_rconv_ovf_u8, FALSE); - register_opcode_emulation (OP_RCONV_TO_OVF_U8_UN, __emul_rconv_to_ovf_u8_un, mono_icall_sig_ulong_float, mono_rconv_ovf_u8_un, FALSE); #ifdef MONO_ARCH_EMULATE_FCONV_TO_I8 register_opcode_emulation (OP_FCONV_TO_I8, __emul_fconv_to_i8, mono_icall_sig_long_double, mono_fconv_i8, FALSE);