xref: /qemu/include/qemu/cpu-float.h (revision a976a99a)
1 #ifndef QEMU_CPU_FLOAT_H
2 #define QEMU_CPU_FLOAT_H
3 
4 #include "fpu/softfloat-types.h"
5 
6 /* Unions for reinterpreting between floats and integers.  */
7 
8 typedef union {
9     float32 f;
10     uint32_t l;
11 } CPU_FloatU;
12 
13 typedef union {
14     float64 d;
15 #if HOST_BIG_ENDIAN
16     struct {
17         uint32_t upper;
18         uint32_t lower;
19     } l;
20 #else
21     struct {
22         uint32_t lower;
23         uint32_t upper;
24     } l;
25 #endif
26     uint64_t ll;
27 } CPU_DoubleU;
28 
29 typedef union {
30      floatx80 d;
31      struct {
32          uint64_t lower;
33          uint16_t upper;
34      } l;
35 } CPU_LDoubleU;
36 
37 typedef union {
38     float128 q;
39 #if HOST_BIG_ENDIAN
40     struct {
41         uint32_t upmost;
42         uint32_t upper;
43         uint32_t lower;
44         uint32_t lowest;
45     } l;
46     struct {
47         uint64_t upper;
48         uint64_t lower;
49     } ll;
50 #else
51     struct {
52         uint32_t lowest;
53         uint32_t lower;
54         uint32_t upper;
55         uint32_t upmost;
56     } l;
57     struct {
58         uint64_t lower;
59         uint64_t upper;
60     } ll;
61 #endif
62 } CPU_QuadU;
63 
64 #endif /* QEMU_CPU_FLOAT_H */
65