2010-07-09 Mark Probst <mark.probst@gmail.com>
[mono.git] / mono / mini / basic-long.cs
index 27490f95b89a0e51b0042af352c24be0c7305a22..5373a5ed92dd3f602f53b305fb96a9fa1d595e94 100644 (file)
@@ -103,6 +103,8 @@ class Tests {
                long a = 0xffffffffff;
                if (a == 0xfffffffffe)
                        return 1;
+               if (a == 0xfeffffffff)
+                       return 2;
                return 0;
        }
 
@@ -110,6 +112,20 @@ class Tests {
                long a = 0xffffffffff;
                if (a > 0xffffffffff)
                        return 1;
+
+               if (a > 0x1ffffffffff)
+                       return 2;
+
+               if (a > 0xff00000000) {} else
+                       return 3;
+
+               if (a > 0xfeffffffff) {} else
+                       return 4;
+
+               a = 0xff00000000;
+               if (a > 0xffffffffff)
+                       return 5;
+
                return 0;
        }
 
@@ -117,6 +133,20 @@ class Tests {
                ulong a = 0xffffffffff;
                if (a > 0xffffffffff)
                        return 1;
+
+               if (a > 0x1ffffffffff)
+                       return 2;
+
+               if (a > 0xff00000000) {} else
+                       return 3;
+
+               if (a > 0xfeffffffff) {} else
+                       return 4;
+
+               a = 0xff00000000;
+               if (a > 0xffffffffff)
+                       return 5;
+
                return 0;
        }
 
@@ -124,6 +154,20 @@ class Tests {
                long a = 0xffffffffff;
                if (a < 0xffffffffff)
                        return 1;
+
+               if (a < 0x1ffffffffff) {} else
+                       return 2;
+
+               if (a < 0xff00000000)
+                       return 3;
+
+               if (a < 0xfeffffffff)
+                       return 4;
+
+               a = 0xff00000000;
+               if (a < 0xffffffffff) {} else
+                       return 5;
+
                return 0;
        }
 
@@ -131,6 +175,20 @@ class Tests {
                ulong a = 0xffffffffff;
                if (a < 0xffffffffff)
                        return 1;
+
+               if (a < 0x1ffffffffff) {} else
+                       return 2;
+
+               if (a < 0xff00000000)
+                       return 3;
+
+               if (a < 0xfeffffffff)
+                       return 4;
+
+               a = 0xff00000000;
+               if (a < 0xffffffffff) {} else
+                       return 5;
+
                return 0;
        }
 
@@ -138,6 +196,20 @@ class Tests {
                long a = 0xfffffffffe;
                if (a >= 0xffffffffff)
                        return 1;
+
+               if (a >= 0x1fffffffffe)
+                       return 2;
+
+               if (a >= 0xff00000000) {} else
+                       return 3;
+
+               if (a >= 0xfefffffffe) {} else
+                       return 4;
+
+               a = 0xff00000000;
+               if (a >= 0xffffffffff)
+                       return 5;
+
                return 0;
        }
 
@@ -145,6 +217,20 @@ class Tests {
                ulong a = 0xfffffffffe;
                if (a >= 0xffffffffff)
                        return 1;
+
+               if (a >= 0x1fffffffffe)
+                       return 2;
+
+               if (a >= 0xff00000000) {} else
+                       return 3;
+
+               if (a >= 0xfefffffffe) {} else
+                       return 4;
+
+               a = 0xff00000000;
+               if (a >= 0xffffffffff)
+                       return 5;
+
                return 0;
        }
 
@@ -152,6 +238,41 @@ class Tests {
                long a = 0xffffffffff;
                if (a <= 0xfffffffffe)
                        return 1;
+
+               if (a <= 0x1ffffffffff) {} else
+                       return 2;
+
+               if (a <= 0xff00000000)
+                       return 3;
+
+               if (a <= 0xfeffffffff)
+                       return 4;
+
+               a = 0xff00000000;
+               if (a <= 0xffffffffff) {} else
+                       return 5;
+
+               return 0;
+       }
+
+       public static int test_0_bgt_un () {
+               ulong a = 0xffffffffff;
+               if (a <= 0xfffffffffe)
+                       return 1;
+
+               if (a <= 0x1ffffffffff) {} else
+                       return 2;
+
+               if (a <= 0xff00000000)
+                       return 3;
+
+               if (a <= 0xfeffffffff)
+                       return 4;
+
+               a = 0xff00000000;
+               if (a <= 0xffffffffff) {} else
+                       return 5;
+
                return 0;
        }
 
@@ -228,6 +349,17 @@ class Tests {
                return (int)(a & 8);
        }
 
+       public static int get_high_bit (ulong a) {
+               if ((a & 0x8000000000000000) != 0)
+                       return 1;
+               return 0;
+       }
+
+       public static int test_1_and () {
+               ulong a = 0xabcd1234deadbeef;
+               return get_high_bit (a);
+       }
+
        public static int test_10_or () {
                long a = 8;
                long b = 2;             
@@ -882,26 +1014,6 @@ class Tests {
                return 0;
        }
 
-       static long return_5low () {
-               return 5;
-       }
-       
-       static long return_5high () {
-               return 0x500000000;
-       }
-
-       public static int test_3_long_ret () {
-               long val = return_5low ();
-               return (int) (val - 2);
-       }
-
-       public static int test_1_long_ret2 () {
-               long val = return_5high ();
-               if (val > 0xffffffff)
-                       return 1;
-               return 0;
-       }
-
        public static int test_3_byte_cast () {
                ulong val = 0xff00ff00f0f0f0f0;
                byte b;
@@ -1062,5 +1174,21 @@ class Tests {
 
                return t == 0 ? 0 : 1;
        }
+
+       public static int test_0_conv_u () {
+               unsafe {
+                       int** dead = (int**) 0xdeadbeaf;
+                       long i = (long)dead;
+                       return (i == 0xdeadbeaf) ? 0 : 1;
+               }
+       }
+
+       public static int test_0_lconv_to_u2 () {
+               unchecked { 
+                       ulong value = (ulong)(short)-10;
+                       value = (ushort)value;
+                   return (value == 65526) ? 0 : 1;
+               }
+       }
 }