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