X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fbasic.cs;h=ecbef60b697f76fdaeaeb7af261fb7b56d4faa01;hb=8f59010d9c863a8be35f4c0a8b125167c95de15c;hp=9ef9afef1369a754ae0ffb7e87c81e6a1f7f3795;hpb=f1f8b8a867c800b21b6a03767252403c2f72cae2;p=mono.git diff --git a/mono/mini/basic.cs b/mono/mini/basic.cs index 9ef9afef136..ecbef60b697 100644 --- a/mono/mini/basic.cs +++ b/mono/mini/basic.cs @@ -152,6 +152,16 @@ class Tests { return b / 2; } + public static int test_2_div_fold4 () { + int b = -8; + return -(b / 4); + } + + public static int test_2_div_fold16 () { + int b = 32; + return b / 16; + } + public static int test_719177_div_destreg () { int year = 1970; return ((365* (year-1)) + ((year-1)/4)); @@ -240,7 +250,7 @@ class Tests { return (int)res; } - public static int test_0_add_ovf () { + public static int test_0_add_ovf1 () { int i, j, k; checked { @@ -251,6 +261,11 @@ class Tests { if (k != System.Int32.MinValue) return 1; + return 0; + } + + public static int test_0_add_ovf2 () { + int i, j, k; checked { i = System.Int32.MaxValue; @@ -260,6 +275,11 @@ class Tests { if (k != System.Int32.MaxValue) return 2; + return 0; + } + + public static int test_0_add_ovf3 () { + int i, j, k; checked { i = System.Int32.MinValue; @@ -269,6 +289,11 @@ class Tests { if (k != -1) return 3; + return 0; + } + + public static int test_0_add_ovf4 () { + int i, j, k; checked { i = System.Int32.MaxValue; @@ -278,6 +303,11 @@ class Tests { if (k != -1) return 4; + return 0; + } + + public static int test_0_add_ovf5 () { + int i, j, k; checked { i = System.Int32.MinValue + 1234; @@ -287,6 +317,11 @@ class Tests { if (k != System.Int32.MinValue) return 5; + return 0; + } + + public static int test_0_add_ovf6 () { + int i, j, k; checked { i = System.Int32.MaxValue - 1234; @@ -307,7 +342,7 @@ class Tests { return number == n ? 0 : 1; } - public static int test_0_sub_ovf () { + public static int test_0_sub_ovf1 () { int i, j, k; checked { @@ -319,6 +354,12 @@ class Tests { if (k != System.Int32.MinValue) return 1; + return 0; + } + + public static int test_0_sub_ovf2 () { + int i, j, k; + checked { i = System.Int32.MaxValue; j = 0; @@ -328,6 +369,12 @@ class Tests { if (k != System.Int32.MaxValue) return 2; + return 0; + } + + public static int test_0_sub_ovf3 () { + int i, j, k; + checked { i = System.Int32.MinValue; j = System.Int32.MinValue + 1234; @@ -337,6 +384,12 @@ class Tests { if (k != -1234) return 3; + return 0; + } + + public static int test_0_sub_ovf4 () { + int i, j, k; + checked { i = System.Int32.MaxValue; j = 1234; @@ -346,6 +399,12 @@ class Tests { if (k != System.Int32.MaxValue - 1234) return 4; + return 0; + } + + public static int test_0_sub_ovf5 () { + int i, j, k; + checked { i = System.Int32.MaxValue - 1234; j = -1234; @@ -355,6 +414,12 @@ class Tests { if (k != System.Int32.MaxValue) return 5; + return 0; + } + + public static int test_0_sub_ovf6 () { + int i, j, k; + checked { i = System.Int32.MinValue + 1234; j = 1234; @@ -610,7 +675,21 @@ class Tests { return 1; else return 0; - } + } + + public static int test_127_iconv_to_i1 () { + int i = 0x100017f; + sbyte s = (sbyte)i; + + return s; + } + + public static int test_384_iconv_to_i2 () { + int i = 0x1000180; + short s = (short)i; + + return s; + } public static int test_15_for_loop () { int i; @@ -1145,4 +1224,100 @@ class Tests { return (int)(i % j); } + + public static int test_0_div_opt () { + int i; + + // Avoid cfolding this + i = 0; + for (int j = 0; j < 1234567; ++j) + i ++; + if ((i / 2) != 617283) + return 1; + if ((i / 4) != 308641) + return 2; + if ((i / 8) != 154320) + return 3; + if ((i / 16) != 77160) + return 4; + + // Avoid cfolding this + i = 0; + for (int j = 0; j < 1234567; ++j) + i --; + if ((i / 2) != -617283) + return 5; + if ((i / 4) != -308641) + return 6; + if ((i / 8) != -154320) + return 7; + if ((i / 16) != -77160) + return 8; + + return 0; + } + + public static int test_0_rem_opt () { + int i; + + // Avoid cfolding this + i = 0; + for (int j = 0; j < 29; ++j) + i ++; + if ((i % 2) != 1) + return 1; + if ((i % 4) != 1) + return 2; + if ((i % 8) != 5) + return 3; + if ((i % 16) != 13) + return 4; + + // Avoid cfolding this + i = 0; + for (int j = 0; j < 29; ++j) + i --; + if ((i % 2) != -1) + return 5; + if ((i % 4) != -1) + return 6; + if ((i % 8) != -5) + return 7; + if ((i % 16) != -13) + return 8; + + return 0; + } + + public static int cmov (int i) { + int j = 0; + + if (i > 0) + j = 1; + + return j; + } + + public static int cmov2 (int i) { + int j = 0; + + if (i <= 0) + ; + else + j = 1; + + return j; + } + + public static int test_0_branch_to_cmov_opt () { + if (cmov (0) != 0) + return 1; + if (cmov (1) != 1) + return 2; + if (cmov2 (0) != 0) + return 1; + if (cmov2 (1) != 1) + return 2; + return 0; + } }