[ASan] mark ioctl test as xfailing on darwin. remove redundant semicolons
[blocksruntime.git] / lib / int_types.h
blobfcce390f9a9bf87906f43943930c58d23573874d
1 /* ===-- int_lib.h - configuration header for compiler-rt -----------------===
3 * The LLVM Compiler Infrastructure
5 * This file is dual licensed under the MIT and the University of Illinois Open
6 * Source Licenses. See LICENSE.TXT for details.
8 * ===----------------------------------------------------------------------===
10 * This file is not part of the interface of this library.
12 * This file defines various standard types, most importantly a number of unions
13 * used to access parts of larger types.
15 * ===----------------------------------------------------------------------===
18 #ifndef INT_TYPES_H
19 #define INT_TYPES_H
21 #include "int_endianness.h"
23 typedef int si_int;
24 typedef unsigned su_int;
26 typedef long long di_int;
27 typedef unsigned long long du_int;
29 typedef union
31 di_int all;
32 struct
34 #if _YUGA_LITTLE_ENDIAN
35 su_int low;
36 si_int high;
37 #else
38 si_int high;
39 su_int low;
40 #endif /* _YUGA_LITTLE_ENDIAN */
41 }s;
42 } dwords;
44 typedef union
46 du_int all;
47 struct
49 #if _YUGA_LITTLE_ENDIAN
50 su_int low;
51 su_int high;
52 #else
53 su_int high;
54 su_int low;
55 #endif /* _YUGA_LITTLE_ENDIAN */
56 }s;
57 } udwords;
59 #if __x86_64
61 typedef int ti_int __attribute__ ((mode (TI)));
62 typedef unsigned tu_int __attribute__ ((mode (TI)));
64 typedef union
66 ti_int all;
67 struct
69 #if _YUGA_LITTLE_ENDIAN
70 du_int low;
71 di_int high;
72 #else
73 di_int high;
74 du_int low;
75 #endif /* _YUGA_LITTLE_ENDIAN */
76 }s;
77 } twords;
79 typedef union
81 tu_int all;
82 struct
84 #if _YUGA_LITTLE_ENDIAN
85 du_int low;
86 du_int high;
87 #else
88 du_int high;
89 du_int low;
90 #endif /* _YUGA_LITTLE_ENDIAN */
91 }s;
92 } utwords;
94 static inline ti_int make_ti(di_int h, di_int l) {
95 twords r;
96 r.s.high = h;
97 r.s.low = l;
98 return r.all;
101 static inline tu_int make_tu(du_int h, du_int l) {
102 utwords r;
103 r.s.high = h;
104 r.s.low = l;
105 return r.all;
108 #endif /* __x86_64 */
110 typedef union
112 su_int u;
113 float f;
114 } float_bits;
116 typedef union
118 udwords u;
119 double f;
120 } double_bits;
122 typedef struct
124 #if _YUGA_LITTLE_ENDIAN
125 udwords low;
126 udwords high;
127 #else
128 udwords high;
129 udwords low;
130 #endif /* _YUGA_LITTLE_ENDIAN */
131 } uqwords;
133 typedef union
135 uqwords u;
136 long double f;
137 } long_double_bits;
139 #endif /* INT_TYPES_H */