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);