1*9c092804SMarkus Armbruster #ifndef QEMU_CPU_FLOAT_H 2*9c092804SMarkus Armbruster #define QEMU_CPU_FLOAT_H 369242e7eSMarc-André Lureau 469242e7eSMarc-André Lureau #include "fpu/softfloat-types.h" 569242e7eSMarc-André Lureau 669242e7eSMarc-André Lureau /* Unions for reinterpreting between floats and integers. */ 769242e7eSMarc-André Lureau 869242e7eSMarc-André Lureau typedef union { 969242e7eSMarc-André Lureau float32 f; 1069242e7eSMarc-André Lureau uint32_t l; 1169242e7eSMarc-André Lureau } CPU_FloatU; 1269242e7eSMarc-André Lureau 1369242e7eSMarc-André Lureau typedef union { 1469242e7eSMarc-André Lureau float64 d; 1569242e7eSMarc-André Lureau #if HOST_BIG_ENDIAN 1669242e7eSMarc-André Lureau struct { 1769242e7eSMarc-André Lureau uint32_t upper; 1869242e7eSMarc-André Lureau uint32_t lower; 1969242e7eSMarc-André Lureau } l; 2069242e7eSMarc-André Lureau #else 2169242e7eSMarc-André Lureau struct { 2269242e7eSMarc-André Lureau uint32_t lower; 2369242e7eSMarc-André Lureau uint32_t upper; 2469242e7eSMarc-André Lureau } l; 2569242e7eSMarc-André Lureau #endif 2669242e7eSMarc-André Lureau uint64_t ll; 2769242e7eSMarc-André Lureau } CPU_DoubleU; 2869242e7eSMarc-André Lureau 2969242e7eSMarc-André Lureau typedef union { 3069242e7eSMarc-André Lureau floatx80 d; 3169242e7eSMarc-André Lureau struct { 3269242e7eSMarc-André Lureau uint64_t lower; 3369242e7eSMarc-André Lureau uint16_t upper; 3469242e7eSMarc-André Lureau } l; 3569242e7eSMarc-André Lureau } CPU_LDoubleU; 3669242e7eSMarc-André Lureau 3769242e7eSMarc-André Lureau typedef union { 3869242e7eSMarc-André Lureau float128 q; 3969242e7eSMarc-André Lureau #if HOST_BIG_ENDIAN 4069242e7eSMarc-André Lureau struct { 4169242e7eSMarc-André Lureau uint32_t upmost; 4269242e7eSMarc-André Lureau uint32_t upper; 4369242e7eSMarc-André Lureau uint32_t lower; 4469242e7eSMarc-André Lureau uint32_t lowest; 4569242e7eSMarc-André Lureau } l; 4669242e7eSMarc-André Lureau struct { 4769242e7eSMarc-André Lureau uint64_t upper; 4869242e7eSMarc-André Lureau uint64_t lower; 4969242e7eSMarc-André Lureau } ll; 5069242e7eSMarc-André Lureau #else 5169242e7eSMarc-André Lureau struct { 5269242e7eSMarc-André Lureau uint32_t lowest; 5369242e7eSMarc-André Lureau uint32_t lower; 5469242e7eSMarc-André Lureau uint32_t upper; 5569242e7eSMarc-André Lureau uint32_t upmost; 5669242e7eSMarc-André Lureau } l; 5769242e7eSMarc-André Lureau struct { 5869242e7eSMarc-André Lureau uint64_t lower; 5969242e7eSMarc-André Lureau uint64_t upper; 6069242e7eSMarc-André Lureau } ll; 6169242e7eSMarc-André Lureau #endif 6269242e7eSMarc-André Lureau } CPU_QuadU; 6369242e7eSMarc-André Lureau 64*9c092804SMarkus Armbruster #endif /* QEMU_CPU_FLOAT_H */ 65