[test] Regression test for #58950
[mono.git] / mono / tests / jit-int.cs
1 using System;
2
3 public class TestJit {
4
5         public static int test_short ()
6         {
7                 int max = 32767;
8                 int min = -32768;
9
10                 int t1 = 0xffeedd;
11                 short s1 = (short)t1;
12                 int t2 = s1;
13
14                 if ((uint)t2 != 0xffffeedd) 
15                         return 1;
16                 
17                 Console.WriteLine (t2.ToString ("X"));
18                 
19                 if (Int16.Parse((min).ToString()) != -32768)
20                         return 1;
21
22                 if (Int16.Parse((max).ToString()) != 32767)
23                         return 1;
24
25                 return 0;
26         }
27
28         public static int test_call (int a, int b) {
29                 return a+b;
30         }
31
32         public static int test_shift ()
33         {
34                 int a = 9, b = 1;
35                 
36                 if ((a << 1) != 18)
37                         return 1;
38
39                 if ((a << b) != 18)
40                         return 1;
41
42                 if ((a >> 1) != 4)
43                         return 1;
44                 
45                 if ((a >> b) != 4)
46                         return 1;
47
48                 a = -9;
49                 if ((a >> b) != -5)
50                         return 1;
51
52                 return 0;
53         }
54         
55         public static int test_alu ()
56         {
57                 int a = 9, b = 6;
58                 
59                 if ((a + b) != 15)
60                         return 1;
61                 
62                 if ((a - b) != 3)
63                         return 1;
64
65                 if ((a & 8) != 8)
66                         return 1;
67
68                 if ((a | 2) != 11)
69                         return 1;
70
71                 if ((a * b) != 54)
72                         return 1;
73                 
74                 if ((a / 4) != 2)
75                         return 1;
76                 
77                 if ((a % 4) != 1)
78                         return 1;
79
80                 if (-a != -9)
81                         return 1;
82
83                 b = -1;
84                 if (~b != 0)
85                         return 1;
86                 
87                 return 0;
88         }
89         
90         public static int test_branch ()
91         {
92                 int a = 5, b = 5, t;
93                 
94                 if (a == b) t = 1; else t = 0;
95                 if (t != 1) return 1;
96
97                 if (a != b) t = 0; else t = 1;
98                 if (t != 1) return 1;
99
100                 if (a >= b) t = 1; else t = 0;
101                 if (t != 1) return 1;
102
103                 if (a > b) t = 0; else t = 1;
104                 if (t != 1) return 1;
105
106                 if (a <= b) t = 1; else t = 0;
107                 if (t != 1) return 1;
108
109                 if (a < b) t = 0; else t = 1;
110                 if (t != 1) return 1;
111
112                 return 0;
113         }
114
115         public static int Main() {
116                 int num = 0;
117
118                 num++;
119                 if (test_short () != 0)
120                         return num;
121
122                 num++;
123                 if (test_call (3, 5) != 8)
124                         return num;
125                 num++;
126
127                 if (test_branch () != 0)
128                         return num;
129                 num++;
130                 
131                 if (test_alu () != 0)
132                         return num;
133                 num++;
134
135                 if (test_shift () != 0)
136                         return num;
137                 num++;
138                 
139                 return 0;
140         }
141 }
142