Fix data types header file and declarations to work on Linux.
[oota-llvm.git] / test / LLC / casts.c
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 #define __STDC_LIMIT_MACROS 1
5 #include <inttypes.h>
6
7
8 int
9 main(int argc, char** argv)
10 {
11   char          c1;
12   short         s1, ssf1, ssd1;
13   uint8_t       ubs0;
14   int8_t        bs0;
15   unsigned char ubc0, uc2;
16   unsigned      short us2, usf1, usd1;
17   int           ic3, is3, sif1, sid1;
18   unsigned      uic4, uis4, uif1, uid1;
19   long          slf1, sld1;
20   unsigned long ulf1, uld1;
21   float         f1;
22   double        d1;
23   
24   /* Test integer to integer conversions */
25   
26   c1 = (char)  (argc >= 2)? atoi(argv[1]) : 0xff64; /* 100 = 'd' */
27   s1 = (short) (argc >= 3)? atoi(argv[2]) : -769;   /* 0xfcff = -769 */
28   
29   ubc0 = (unsigned char) c1;                      /* 100 = 'd' */
30   ubs0 = (uint8_t) s1;                            /* 0xff = 255 */
31   bs0  = (int8_t) s1;                             /* 0xff = -1 */
32   
33   uc2 = (unsigned char) c1;                       /* 100 = 'd' */
34   us2 = (unsigned short) s1;                      /* 0xfcff = 64767 */
35   
36   ic3 = (int) c1;                                 /* 100 = 'd' */
37   is3 = (int) s1;                                 /* 0xfffffcff = -769 */
38   
39   uic4 = (unsigned int) c1;                       /*  100 = 'd' */
40   uis4 = (unsigned int) s1;                       /* 0xfffffcff = 4294966527 */
41   
42   printf("ubc0 = '%c'\n", ubc0);
43   printf("ubs0 = %u\n",   ubs0);
44   printf("bs0  = %d\n",   bs0);
45   printf("c1   = '%c'\n", c1);
46   printf("s1   = %d\n",   s1);
47   printf("uc2  = '%c'\n", uc2);
48   printf("us2  = %u\n",   us2);
49   printf("ic3  = '%c'\n", ic3);
50   printf("is3  = %d\n",   is3);
51   printf("uic4 = '%c'\n", uic4);
52   printf("uis4 = %u\n",   uis4);
53   
54   /* Test floating-point to integer conversions */
55   f1 = (float)  (argc >= 4)? atof(argv[3]) : 1.0;
56   d1 =          (argc >= 5)? atof(argv[4]) : 2.0;
57   
58   usf1 = (unsigned short) f1;
59   usd1 = (unsigned short) d1;
60   uif1 = (unsigned int) f1;
61   uid1 = (unsigned int) d1;
62   ulf1 = (unsigned long) f1;
63   uld1 = (unsigned long) d1;
64   
65   ssf1 = (short) f1;
66   ssd1 = (short) d1;
67   sif1 = (int) f1;
68   sid1 = (int) d1;
69   slf1 = (long) f1;
70   sld1 = (long) d1;
71   
72   printf("usf1 = %u\n", usf1);
73   printf("usd1 = %u\n", usd1);
74   printf("uif1 = %u\n", uif1);
75   printf("uid1 = %u\n", uid1);
76   printf("ulf1 = %lu\n", ulf1);
77   printf("uld1 = %lu\n", uld1);
78   
79   printf("ssf1 = %d\n", ssf1);
80   printf("ssd1 = %d\n", ssd1);
81   printf("sif1 = %d\n", sif1);
82   printf("sid1 = %d\n", sid1);
83   printf("slf1 = %ld\n", slf1);
84   printf("sld1 = %ld\n", sld1);
85   
86   return 0;
87 }