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