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