020ed2d3f9a1adda6e1e2d35d8ba5e80f722ebf0
[fw/sdcc] / src / regression / add2.c
1
2 // Addition tests - mostly int's
3
4 /* bit types are not ANSI - so provide a way of disabling bit types
5  * if this file is used to test other compilers besides SDCC */
6 #define SUPPORT_BIT_TYPES 1
7
8
9 unsigned char success=0;
10 unsigned char failures=0;
11 unsigned char dummy=0;
12
13
14 unsigned int aint0 = 0;
15 unsigned int aint1 = 0;
16 unsigned int aint2 = 0;
17 unsigned int aint3 = 0;
18 unsigned char achar0 = 0;
19 unsigned char achar1 = 0;
20 unsigned char achar2 = 0;
21 unsigned char achar3 = 0;
22 unsigned char *acharP = 0;
23
24 #if SUPPORT_BIT_TYPES
25
26 bit bit0 = 0;
27 bit bit1 = 0;
28 bit bit2 = 0;
29 bit bit3 = 0;
30 bit bit4 = 0;
31 bit bit5 = 0;
32 bit bit6 = 0;
33 bit bit7 = 0;
34 bit bit8 = 0;
35 bit bit9 = 0;
36 bit bit10 = 0;
37 bit bit11 = 0;
38
39 #endif
40
41
42 void done()
43 {
44
45   dummy++;
46
47 }
48
49 void add_lit2uint(void)
50 {
51
52   aint0 = aint0 + 5;
53
54   if(aint0 != 5)
55     failures++;
56
57   aint0 += 10;
58
59   if(aint0 != 15)
60     failures++;
61
62   aint0 = aint0 +1;  // Should be an increment
63   if(aint0 != 16)
64     failures++;
65
66   for(aint1 = 0; aint1 < 100; aint1++)
67     aint0 += 2;
68
69   if(aint0 != 216)
70     failures++;
71
72 }
73
74 void add_uint2uint (void)
75 {
76
77   aint1 = aint1 + aint0;
78
79   if(aint1 != 16)
80     failures++;
81
82   for(aint2 = 0; aint2<7; aint2++)
83     aint1 += aint0;
84
85   if(aint1 != 128)
86     failures++;
87
88 }
89
90 // assumes
91 //  aint0 = 0
92 //  aint1 = 32
93 //  aint2, aint3 can be anything.
94
95 void add_uint2uint2(void)
96 {
97
98
99   aint0++;
100   aint0 = aint0 + 1;
101   aint0 = aint0 + 2;
102   aint0 = aint0 + 3;
103   if(aint0 != 7)
104     failures++;
105
106   aint1 += aint0;
107   if(aint1 != 39)
108     failures++;
109
110   aint2 = aint1 + aint0;
111   if(aint2 != 46)
112     failures++;
113
114   aint3 = aint2 + aint1 + aint0;
115   if(aint3 != 92)
116     failures++;
117
118 }
119
120 #if SUPPORT_BIT_TYPES
121 void add_bits(void)
122 {
123
124   bit1 = bit0;
125
126   bit0 = 1;
127
128   if(bit1 != 0)
129     failures++;
130
131   bit1 = bit1+bit0;
132   if(bit1 != 1)
133     failures++;
134
135   bit2 = bit1+bit3;
136   if(!bit2)
137     failures++;
138
139   bit3 = bit4+bit5+bit6+bit7+bit0;
140   if(!bit3)
141     failures++;
142 }
143 #endif
144
145 /* add_bit2uchar(void) - assumes bit0 = 1, aint0 = 7  */
146
147 void add_bit2uchar(void)
148 {
149
150   achar0 += bit0;
151
152   if(achar0 != 8)
153     failures++;
154
155   if(achar0 == bit0)
156     failures++;
157
158 }
159
160 void add_bit2uint(void)
161 {
162
163   if(aint0 != bit11)
164     failures++;
165
166   aint0 += bit0;
167   if(aint0!=1)
168     failures++;
169
170 }
171
172 /***********************************/
173
174 void addlits(void)
175 {
176   aint0 += 0x0001;
177
178   if(aint0 != 1)
179     failures++;
180
181   aint0 += 0x00;
182
183   if(aint0 != 1)
184     failures++;
185
186   aint0 += 0x00fe;
187   if(aint0 != 0x00ff)
188     failures++;
189
190   aint0 += 0x0001;
191
192   if(aint0 != 0x0100)
193     failures++;
194
195   aint0++;
196   if(aint0 != 0x0101)
197     failures++;
198
199   aint0 += 0x00ff;
200   if(aint0 != 0x0200)
201     failures++;
202
203   aint0 += 0x00a0;
204   if(aint0 != 0x02a0)
205     failures++;
206
207   aint0 += 0x0061;
208   if(aint0 != 0x0301)
209     failures++;
210
211   aint0 += 0x0100;
212   if(aint0 != 0x0401)
213     failures++;
214
215   aint0 += 0x0101;
216   if(aint0 != 0x0502)
217     failures++;
218
219   aint0 += 0x00fd;
220   if(aint0 != 0x05ff)
221     failures++;
222
223   aint0 += 0x0101;
224   if(aint0 != 0x0700)
225     failures++;
226
227   aint0 += 0x01ff;
228   if(aint0 != 0x08ff)
229     failures++;
230
231   aint0 += 0x01ff;
232   if(aint0 != 0x0afe)
233     failures++;
234
235   aint0 += 0xff02;
236   if(aint0 != 0x0a00)
237     failures++;
238
239   aint0 += 0xffff;
240   if(aint0 != 0x09ff)
241     failures++;
242
243   aint0 += 0xff01;
244   if(aint0 != 0x0900)
245     failures++;
246
247   aint0 += 0xff00;
248   if(aint0 != 0x0800)
249     failures++;
250
251   aint0 += 0xff01;
252   if(aint0 != 0x0701)
253     failures++;
254
255   aint0 += 0x0300;
256   if(aint0 != 0x0a01)
257     failures++;
258
259   aint0 += 0x03ff;
260   if(aint0 != 0x0e00)
261     failures++;
262
263   aint0 += 0x0301;
264   if(aint0 != 0x1101)
265     failures++;
266
267   aint0 += 0x03fe;
268   if(aint0 != 0x14ff)
269     failures++;
270
271   aint0 += 0x0301;
272   if(aint0 != 0x1800)
273     failures++;
274  
275 }
276
277
278 void main(void)
279 {
280
281   add_lit2uint();
282
283   aint0=16;
284   aint1=0;
285   //  add_uint2uint();
286
287
288   aint0 = 0;
289   aint1 = 32;
290   //  add_uint2uint2();
291
292 #if SUPPORT_BIT_TYPES
293   //  add_bits();
294
295   //  add_bit2uchar();
296   //  add_bit2uint();
297 #endif
298
299   aint0 = 0;
300   addlits();
301
302   success = failures;
303   done();
304 }