* src/regression/ptrarg.c: added, fails due to bug #1430967
[fw/sdcc] / src / regression / rotate5.c
1 #include "gpsim_assert.h"
2 // Shift bytes left and right by a constant.
3
4 unsigned char failures=0;
5
6 bit bit0 = 0;
7 signed int aint0 = 0;
8 signed int aint1 = 0;
9 signed char achar0 = 0;
10 signed char achar1 = 0;
11 signed char achar2 = 0;
12
13 void
14 done()
15 {
16   ASSERT(MANGLE(failures) == 0);
17   PASSED();
18 }
19
20 void check(void)
21 {
22   if(achar0 != achar1)
23     failures++;
24 }
25
26 void shift_left_1(void)
27 {
28
29   achar0 <<= 1;
30
31   check();
32 }
33
34 void shift_left_2(void)
35 {
36
37   achar0 <<= 2;
38
39   if(achar0 != achar1)
40     failures++;
41 }
42
43
44 void shift_left_3(void)
45 {
46
47   achar0 <<= 3;
48
49   if(achar0 != achar1)
50     failures++;
51 }
52
53 void shift_left_4(void)
54 {
55
56   achar0 <<= 4;
57
58   if(achar0 != achar1)
59     failures++;
60 }
61
62 void shift_left_5(void)
63 {
64
65   achar0 <<= 5;
66
67   if(achar0 != achar1)
68     failures++;
69 }
70
71 void shift_left_6(void)
72 {
73
74   achar0 <<= 6;
75
76   if(achar0 != achar1)
77     failures++;
78 }
79
80 void shift_left_7(void)
81 {
82
83   achar0 <<= 7;
84
85   if(achar0 != achar1)
86     failures++;
87 }
88
89 void shift_right_1(void)
90 {
91
92   achar0 >>= 1;
93
94   check();
95 }
96
97 void shift_right_2(void)
98 {
99
100   achar0 >>= 2;
101
102   check();
103 }
104
105 void shift_right_3(void)
106 {
107
108   achar0 >>= 3;
109
110   check();
111 }
112
113 void shift_right_4(void)
114 {
115
116   achar0 >>= 4;
117
118   check();
119 }
120
121 void shift_right_5(void)
122 {
123
124   achar0 >>= 5;
125
126   check();
127 }
128
129 void shift_right_6(void)
130 {
131
132   achar0 >>= 6;
133
134   check();
135 }
136
137 void shift_right_7(void)
138 {
139
140   achar0 >>= 7;
141
142   check();
143 }
144
145
146 void main(void)
147 {
148
149   // call with both values zero
150   shift_left_1();
151
152   achar0 = 1;
153   achar1 = 2;
154   for(achar2=0; achar2<6; achar2++) {
155     shift_left_1();
156     achar1 <<=1;
157   }
158
159   achar0 = 1;
160   achar1 = 4;
161   shift_left_2();
162
163   achar0 = 1;
164   achar1 = 8;
165   shift_left_3();
166
167   achar0 = 1;
168   achar1 = 0x10;
169   shift_left_4();
170
171   achar0 = 1;
172   achar1 = 0x20;
173   shift_left_5();
174
175   achar0 = 1;
176   achar1 = 0x40;
177   shift_left_6();
178
179   achar0 = 1;
180   achar1 = 0x80;
181   shift_left_7();
182
183
184
185
186   achar0 = 2;
187   achar1 = 1;
188   shift_right_1();
189
190   achar0 = 4;
191   shift_right_2();
192
193   achar0 = 8;
194   shift_right_3();
195
196   achar0 = 0x10;
197   shift_right_4();
198
199   achar0 = 0x20;
200   shift_right_5();
201
202   achar0 = 0x40;
203   shift_right_6();
204
205
206   achar0 = 0xff;
207   achar1 = 0xff;
208   shift_right_1();
209
210   achar0 = 0xfe;
211   achar1 = 0xff;
212   shift_right_1();
213
214   achar0 = 0xfc;
215   shift_right_2();
216
217   achar0 = 0xf8;
218   shift_right_3();
219
220   achar0 = 0xf0;
221   shift_right_4();
222
223   achar0 = 0xe0;
224   shift_right_5();
225
226   achar0 = 0xc0;
227   shift_right_6();
228
229   achar0 = 0x80;
230   achar1 = 0xff;
231   shift_right_7();
232
233
234   done();
235 }