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