[Mono-patches] r43083 - trunk/mono/mono/mini

Zoltan Varga (vargaz AT freemail.hu) zoltan@mono-cvs.ximian.com
Fri, 15 Apr 2005 17:56:42 -0400 (EDT)


Author: zoltan
Date: 2005-04-15 17:56:41 -0400 (Fri, 15 Apr 2005)
New Revision: 43083

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/cpu-amd64.md
   trunk/mono/mono/mini/iltests.il
   trunk/mono/mono/mini/inssel-long.brg
Log:
2005-04-16  Zoltan Varga  <vargaz@freemail.hu>

	* inssel-long.brg: Fix #74588.

	* cpu-amd64.md: Fix #74591.

	* iltests.il: Add new regression tests.


Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog	2005-04-15 21:44:50 UTC (rev 43082)
+++ trunk/mono/mono/mini/ChangeLog	2005-04-15 21:56:41 UTC (rev 43083)
@@ -1,3 +1,11 @@
+2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
+
+	* inssel-long.brg: Fix #74588.
+
+	* cpu-amd64.md: Fix #74591.
+
+	* iltests.il: Add new regression tests.
+
 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
 
 	* trace.c (mono_trace_enter_method): Print enums as an int, not as a

Modified: trunk/mono/mono/mini/cpu-amd64.md
===================================================================
--- trunk/mono/mono/mini/cpu-amd64.md	2005-04-15 21:44:50 UTC (rev 43082)
+++ trunk/mono/mono/mini/cpu-amd64.md	2005-04-15 21:56:41 UTC (rev 43083)
@@ -397,9 +397,9 @@
 long_clt_un:
 long_conv_to_r_un: dest:f src1:i src2:i len:48 
 long_conv_to_u:
-long_shr_imm: dest:i src1:i len:11
-long_shr_un_imm: dest:i src1:i len:11
-long_shl_imm: dest:i src1:i len:11
+long_shr_imm: dest:i src1:i clob:1 len:11
+long_shr_un_imm: dest:i src1:i clob:1 len:11
+long_shl_imm: dest:i src1:i clob:1 len:11
 long_add_imm:
 long_sub_imm:
 long_beq:

Modified: trunk/mono/mono/mini/iltests.il
===================================================================
--- trunk/mono/mono/mini/iltests.il	2005-04-15 21:44:50 UTC (rev 43082)
+++ trunk/mono/mono/mini/iltests.il	2005-04-15 21:56:41 UTC (rev 43083)
@@ -698,4 +698,31 @@
 		ret
 	}
 
+	.method public static int32 test_7_conv_ovf_u8_un () {
+    	.maxstack  2
+        .locals    init (unsigned int64)
+
+        ldc.i4.7
+        conv.ovf.u8.un
+        stloc.0
+		ldloc.0
+		conv.i4
+        ret
+	}
+
+	.method public static int32 test_1_bug_74591 () {
+		.maxstack 16
+		.locals init (int32)
+
+		ldc.i4.m1
+		stloc.0
+		ldloc.0
+		conv.ovf.i8
+		ldc.i4.m1
+		conv.ovf.i8
+		mul.ovf
+		conv.i4
+		ret
+	}
+
 }

Modified: trunk/mono/mono/mini/inssel-long.brg
===================================================================
--- trunk/mono/mono/mini/inssel-long.brg	2005-04-15 21:44:50 UTC (rev 43082)
+++ trunk/mono/mono/mini/inssel-long.brg	2005-04-15 21:56:41 UTC (rev 43083)
@@ -328,8 +328,9 @@
 	MONO_EMIT_BIALU_IMM (s, tree, OP_LSHR_IMM, state->reg1, state->left->reg1, 0);
 }
 
-reg: CEE_CONV_OVF_I8_UN (reg) {
-	/* an unsigned 32 bit num always fits in a signed 64 bit one */
+reg: CEE_CONV_OVF_I8_UN (reg),
+reg: CEE_CONV_OVF_U8_UN (reg) {
+	/* an unsigned 32 bit num always fits in an (un)signed 64 bit one */
 	/* Clean out the upper word */
 	MONO_EMIT_BIALU_IMM (s, tree, OP_SHR_UN_IMM, state->reg1, state->left->reg1, 0);
 }
@@ -340,13 +341,6 @@
 	MONO_EMIT_UNALU (s, tree, OP_MOVE, state->reg1, state->left->reg1);
 }
 
-reg: CEE_CONV_OVF_U8_UN (reg) {
-	g_assert_not_reached ();
-}
-
-
-
-
 reg: OP_LCALLVIRT (reg) {
 	mini_emit_virtual_call (s, state, tree, OP_LCALL, OP_LCALL_MEMBASE);
 }