* device/lib/Makefile.in (Z80SOURCES): enabled float support
[fw/sdcc] / support / regression / tests / shifts2.c
1 /** extended tests for shift operations, added by\r
2     Frieder Ferlemann to check for bugs related to bug 1533966\r
3 \r
4     size: 8,16,32\r
5     right: 0,1\r
6     vol: 0,1\r
7     sign: u,\r
8 */\r
9 #include <testfwk.h>\r
10 #ifdef __sun__\r
11 #  include <inttypes.h>\r
12 #else\r
13 #  include <stdint.h>\r
14 #endif\r
15 \r
16 #define SIZE    ({size})\r
17 #define RIGHT   ({right})\r
18 #define VOL     ({vol})\r
19 \r
20 #if SIZE == 8\r
21 #  define TYPE {sign}int8_t\r
22 #  define TEST_VECT 0xa4\r
23 #endif\r
24 \r
25 #if SIZE == 16\r
26 #  define TYPE {sign}int16_t\r
27 #  define TEST_VECT 0xa8ce\r
28 #endif\r
29 \r
30 #if SIZE == 32\r
31 #  define TYPE {sign}int32_t\r
32 #  define TEST_VECT 0xa8b5c4d6\r
33 #endif\r
34 \r
35 #if RIGHT == 0\r
36 #  define SHIFT(x,y) (TYPE)((TYPE)(x)<<(y))\r
37 #else\r
38 #  define SHIFT(x,y) (TYPE)((TYPE)(x)>>(y))\r
39 #endif\r
40 \r
41 #if VOL == 0\r
42   volatile TYPE s = TEST_VECT;\r
43            TYPE t;\r
44   #define TESTSHIFT(x) t=s; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));\r
45 #else\r
46   volatile TYPE t = TEST_VECT;\r
47   #define TESTSHIFT(x) t=TEST_VECT; t = SHIFT (t,(x)); ASSERT( t == SHIFT (TEST_VECT, (x)));\r
48 #endif\r
49 \r
50 static void\r
51 testShift(void)\r
52 {\r
53     TESTSHIFT(0);\r
54     TESTSHIFT(1);\r
55     TESTSHIFT(2);\r
56     TESTSHIFT(3);\r
57     TESTSHIFT(4);\r
58     TESTSHIFT(5);\r
59     TESTSHIFT(6);\r
60     TESTSHIFT(7);\r
61 \r
62 #if SIZE >= 16\r
63     TESTSHIFT(8);\r
64     TESTSHIFT(9);\r
65     TESTSHIFT(10);\r
66     TESTSHIFT(11);\r
67     TESTSHIFT(12);\r
68     TESTSHIFT(13);\r
69     TESTSHIFT(14);\r
70     TESTSHIFT(15);\r
71 #endif\r
72 \r
73 #if SIZE >= 32\r
74     TESTSHIFT(16);\r
75     TESTSHIFT(17);\r
76     TESTSHIFT(18);\r
77     TESTSHIFT(19);\r
78     TESTSHIFT(20);\r
79     TESTSHIFT(21);\r
80     TESTSHIFT(22);\r
81     TESTSHIFT(23);\r
82 \r
83     TESTSHIFT(24);\r
84     TESTSHIFT(25);\r
85     TESTSHIFT(26);\r
86     TESTSHIFT(27);\r
87     TESTSHIFT(28);\r
88     TESTSHIFT(29);\r
89     TESTSHIFT(30);\r
90     TESTSHIFT(31);\r
91 #endif\r
92 }\r