X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fbasic.cs;h=b700efa87e39503de0291560b09a388d4600241e;hb=866ada23cff1594587760abe7c10e89dfad0ac5b;hp=ecbef60b697f76fdaeaeb7af261fb7b56d4faa01;hpb=9d31ef7d3afece3e9bb4d13f3c97e76609ddaa20;p=mono.git diff --git a/mono/mini/basic.cs b/mono/mini/basic.cs index ecbef60b697..b700efa87e3 100644 --- a/mono/mini/basic.cs +++ b/mono/mini/basic.cs @@ -190,6 +190,16 @@ class Tests { return b % 8; } + public static int test_0_rem_imm_0 () { + int b = 12; + return b % 1; + } + + public static int test_0_rem_imm_0_neg () { + int b = -2; + return b % 1; + } + public static int test_4_rem_big_imm () { int b = 10004; return b % 10000; @@ -1230,8 +1240,9 @@ class Tests { // Avoid cfolding this i = 0; - for (int j = 0; j < 1234567; ++j) + for (int j = 0; j < 567; ++j) i ++; + i += 1234000; if ((i / 2) != 617283) return 1; if ((i / 4) != 308641) @@ -1243,8 +1254,9 @@ class Tests { // Avoid cfolding this i = 0; - for (int j = 0; j < 1234567; ++j) + for (int j = 0; j < 567; ++j) i --; + i -= 1234000; if ((i / 2) != -617283) return 5; if ((i / 4) != -308641) @@ -1320,4 +1332,33 @@ class Tests { return 2; return 0; } -} + + public static unsafe int test_0_ishr_sign_extend () { + // Check that ishr does sign extension from bit 31 on 64 bit platforms + uint val = 0xF0000000u; + + uint *a = &val; + uint ui = (uint)((int)(*a) >> 2); + + if (ui != 0xfc000000) + return 1; + + // Same with non-immediates + int amount = 2; + + ui = (uint)((int)(*a) >> amount); + + if (ui != 0xfc000000) + return 2; + + return 0; + } + + public static unsafe int test_0_ishr_sign_extend_cfold () { + int i = 32768; + int j = i << 16; + int k = j >> 16; + + return k == -32768 ? 0 : 1; + } +} \ No newline at end of file