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