* src/regression/ptrarg.c: added, fails due to bug #1430967
[fw/sdcc] / src / regression / rotate6.c
1 #include "gpsim_assert.h"
2 // Shift bytes left and right by a variable.
3
4 unsigned char failures=0;
5
6 bit bit0 = 0;
7 signed int aint0 = 0;
8 signed int aint1 = 0;
9 signed char achar0 = 0;
10 signed char achar1 = 0;
11 signed char achar2 = 0;
12 signed char achar3 = 0;
13
14 void
15 done()
16 {
17   ASSERT(MANGLE(failures) == 0);
18   PASSED();
19 }
20
21 void shift_right_var(void)
22 {
23
24   achar0 >>= achar1;
25
26 }
27
28 void shift_left_var(void)
29 {
30
31   achar0 <<= achar1;
32 }
33
34 void shift_int_left_var(void)
35 {
36
37   aint0 <<= achar1;
38
39 }
40
41 void shift_int_right_var(void)
42 {
43
44   aint0 >>= achar1;
45
46 }
47
48 void shift_int_right_var2(void)
49 {
50
51   aint0 = aint1 >> achar1;
52
53 }
54
55 void shift_int_left_var2(void)
56 {
57
58   aint0 = aint1 << achar1;
59
60 }
61
62 void main(void)
63 {
64   char i;
65
66   achar0 = 1;
67   achar1 = 1;
68   shift_left_var();
69
70   if(achar0 !=2)
71     failures++;
72
73   achar0 = 1;
74   achar1 = 1;
75   achar2 = 1;
76   for(i=0; i<7; i++) {
77     shift_left_var();
78     achar2 <<= 1;
79
80     if(achar2 != achar0)
81       failures++;
82   }
83
84   achar1 = 4;
85   achar0 = 0xf0;
86   shift_right_var();
87   if(achar0 != 0xff)
88     failures++;
89
90   aint0 = 1;
91   aint1 = 1;
92   achar1 = 1;
93
94   for(i=0; i<15; i++) {
95     shift_int_left_var();
96     aint1 <<= 1;
97     if(aint0 != aint1)
98       failures++;
99   }
100
101   aint0 = 0x4000;
102   aint1 = 0x4000;
103
104   for(i=0; i<15; i++) {
105     shift_int_right_var();
106     aint1 >>= 1;
107     if(aint0 != aint1)
108       failures++;
109   }
110
111
112   aint0 = -0x4000;
113   aint1 = -0x4000;
114
115   for(i=0; i<15; i++) {
116     shift_int_right_var();
117     aint1 >>= 1;
118     if(aint0 != aint1)
119       failures++;
120   }
121
122   aint1 = 0xf000;
123   achar1 = 10;
124   shift_int_right_var2();
125
126   if(aint0 != 0xfffc)
127     failures++;
128
129   aint1 = aint0;
130   shift_int_left_var2();
131
132   if(aint0 != 0xf000)
133     failures++;
134
135   done();
136 }