]> git.sur5r.net Git - cc65/blob - test/val/rotate2.c
All regression-tests subdirectories are cleaned before the first test starts, so...
[cc65] / test / val / rotate2.c
1 /*
2   !!DESCRIPTION!! Shift bytes left and right by a variable.
3   !!ORIGIN!!      SDCC regression tests
4   !!LICENCE!!     GPL, read COPYING.GPL
5 */
6
7 #include <stdio.h>
8 #include <limits.h>
9
10 unsigned char success=0;
11 unsigned char failures=0;
12 unsigned char dummy=0;
13
14 #ifdef SUPPORT_BIT_TYPES
15 bit bit0 = 0;
16 #endif
17 unsigned int aint0 = 0;
18 unsigned int aint1 = 0;
19 unsigned char achar0 = 0;
20 unsigned char achar1 = 0;
21 unsigned char achar2 = 0;
22 unsigned char achar3 = 0;
23
24 void done()
25 {
26   dummy++;
27 }
28
29 void shift_right_var(void)
30 {
31   achar0 >>= achar1;
32 }
33
34 void shift_left_var(void)
35 {
36   achar0 <<= achar1;
37 }
38
39 void shift_int_left_1(void)
40 {
41   aint0 <<= 1;
42 }
43
44 int main(void)
45 {
46   char i;
47
48   achar0 = 1;
49   achar1 = 1;
50   shift_left_var();
51
52   if(achar0 !=2)
53     failures++;
54
55   achar0 = 1;
56   achar1 = 1;
57   achar2 = 1;
58   for(i=0; i<7; i++) {
59     shift_left_var();
60     achar2 <<= 1;
61
62     if(achar2 != achar0)
63       failures++;
64   }
65
66   success=failures;
67   done();
68   printf("failures: %d\n",failures);
69
70   return failures;
71 }