Imported Upstream version 2.9.0
[debian/cc1111] / src / regression / rotate6.c
1 #include "gpsim_assert.h"
2 // Shift bytes left and right by a variable.
3
4 unsigned char failures=0;
5
6 signed int aint0 = 0;
7 signed int aint1 = 0;
8 signed char achar0 = 0;
9 signed char achar1 = 0;
10 signed char achar2 = 0;
11 signed char achar3 = 0;
12
13 void
14 done()
15 {
16   ASSERT(MANGLE(failures) == 0);
17   PASSED();
18 }
19
20 void shift_right_var(void)
21 {
22
23   achar0 >>= achar1;
24
25 }
26
27 void shift_left_var(void)
28 {
29
30   achar0 <<= achar1;
31 }
32
33 void shift_int_left_var(void)
34 {
35
36   aint0 <<= achar1;
37
38 }
39
40 void shift_int_right_var(void)
41 {
42
43   aint0 >>= achar1;
44
45 }
46
47 void shift_int_right_var2(void)
48 {
49
50   aint0 = aint1 >> achar1;
51
52 }
53
54 void shift_int_left_var2(void)
55 {
56
57   aint0 = aint1 << achar1;
58
59 }
60
61 void main(void)
62 {
63   char i;
64
65   achar0 = 1;
66   achar1 = 1;
67   shift_left_var();
68
69   if(achar0 !=2)
70     failures++;
71
72   achar0 = 1;
73   achar1 = 1;
74   achar2 = 1;
75   for(i=0; i<7; i++) {
76     shift_left_var();
77     achar2 <<= 1;
78
79     if(achar2 != achar0)
80       failures++;
81   }
82
83   achar1 = 4;
84   achar0 = 0xf0;
85   shift_right_var();
86   if(achar0 != (char)0xff)
87     failures++;
88
89   aint0 = 1;
90   aint1 = 1;
91   achar1 = 1;
92
93   for(i=0; i<15; i++) {
94     shift_int_left_var();
95     aint1 <<= 1;
96     if(aint0 != aint1)
97       failures++;
98   }
99
100   aint0 = 0x4000;
101   aint1 = 0x4000;
102
103   for(i=0; i<15; i++) {
104     shift_int_right_var();
105     aint1 >>= 1;
106     if(aint0 != aint1)
107       failures++;
108   }
109
110
111   aint0 = -0x4000;
112   aint1 = -0x4000;
113
114   for(i=0; i<15; i++) {
115     shift_int_right_var();
116     aint1 >>= 1;
117     if(aint0 != aint1)
118       failures++;
119   }
120
121   aint1 = 0xf000;
122   achar1 = 10;
123   shift_int_right_var2();
124
125   if(aint0 != 0xfffc)
126     failures++;
127
128   aint1 = aint0;
129   shift_int_left_var2();
130
131   if(aint0 != 0xf000)
132     failures++;
133
134   done();
135 }