1 /*
2    921029-1.c from the execute part of the gcc torture suite.
3  */
4 
5 #include <testfwk.h>
6 
7 #ifdef __SDCC
8 #pragma std_c99
9 #endif
10 
11 // TODO: Enable when sdcc supports long long in these ports!
12 #if !defined(__SDCC_pic14) && !defined(__SDCC_pic16)
13 typedef unsigned long long ULL;
14 ULL back;
15 ULL hpart, lpart;
16 ULL
build(long h,long l)17 build(long h, long l)
18 {
19   hpart = h;
20   hpart <<= 32;
21   lpart = l;
22   lpart &= 0xFFFFFFFFLL;
23   back = hpart | lpart;
24   return back;
25 }
26 #endif
27 
28 void
testTortureExecute(void)29 testTortureExecute (void)
30 {
31 #if !defined(__SDCC_pdk14) // Lack of memory
32   if (build(0, 1) != 0x0000000000000001LL)
33     ASSERT(0);
34   if (build(0, 0) != 0x0000000000000000LL)
35     ASSERT(0);
36   if (build(0, 0xFFFFFFFF) != 0x00000000FFFFFFFFLL)
37     ASSERT(0);
38   if (build(0, 0xFFFFFFFE) != 0x00000000FFFFFFFELL)
39     ASSERT(0);
40   if (build(1, 1) != 0x0000000100000001LL)
41     ASSERT(0);
42   if (build(1, 0) != 0x0000000100000000LL)
43     ASSERT(0);
44   if (build(1, 0xFFFFFFFF) != 0x00000001FFFFFFFFLL)
45     ASSERT(0);
46   if (build(1, 0xFFFFFFFE) != 0x00000001FFFFFFFELL)
47     ASSERT(0);
48   if (build(0xFFFFFFFF, 1) != 0xFFFFFFFF00000001LL)
49     ASSERT(0);
50   if (build(0xFFFFFFFF, 0) != 0xFFFFFFFF00000000LL)
51     ASSERT(0);
52   if (build(0xFFFFFFFF, 0xFFFFFFFF) != 0xFFFFFFFFFFFFFFFFLL)
53     ASSERT(0);
54   if (build(0xFFFFFFFF, 0xFFFFFFFE) != 0xFFFFFFFFFFFFFFFELL)
55     ASSERT(0);
56   return;
57 #endif
58 }
59 
60