Added to test bug 609628 ==> x = (x+1) & 0xf
[fw/sdcc] / src / regression / rotate2.c
1 #define __16F873
2 #include "p16f873.h"
3 // Shift bytes left and right by a variable.
4
5 unsigned char success=0;
6 unsigned char failures=0;
7 unsigned char dummy=0;
8
9 bit bit0 = 0;
10 unsigned int aint0 = 0;
11 unsigned int aint1 = 0;
12 unsigned char achar0 = 0;
13 unsigned char achar1 = 0;
14 unsigned char achar2 = 0;
15 unsigned char achar3 = 0;
16
17 void done()
18 {
19
20   dummy++;
21
22 }
23
24 void shift_right_var(void)
25 {
26
27   achar0 >>= achar1;
28 }
29
30 void shift_left_var(void)
31 {
32
33   achar0 <<= achar1;
34 }
35
36 void shift_int_left_1(void)
37 {
38
39   aint0 <<= 1;
40
41 }
42
43 void main(void)
44 {
45   char i;
46
47   achar0 = 1;
48   achar1 = 1;
49   shift_left_var();
50
51   if(achar0 !=2)
52     failures++;
53
54   achar0 = 1;
55   achar1 = 1;
56   achar2 = 1;
57   for(i=0; i<7; i++) {
58     shift_left_var();
59     achar2 <<= 1;
60
61     if(achar2 != achar0)
62       failures++;
63   }
64
65   success=failures;
66   done();
67 }