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