Rev 563 | Rev 857 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 563 | Rev 647 | ||
|---|---|---|---|
| Line 27... | Line 27... | ||
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | #ifndef __SOFTFLOAT_H__ |
29 | #ifndef __SOFTFLOAT_H__ |
| 30 | #define __SOFTFLOAT_H__ |
30 | #define __SOFTFLOAT_H__ |
| 31 | 31 | ||
| 32 | - | ||
| 33 | typedef union { |
- | |
| 34 | float f; |
- | |
| 35 | struct { |
- | |
| 36 | #ifdef __BIG_ENDIAN__ |
- | |
| 37 | __u32 sign:1; |
- | |
| 38 | __u32 exp:8; |
- | |
| 39 | __u32 mantisa:23; |
- | |
| 40 | #elif defined __LITTLE_ENDIAN__ |
- | |
| 41 | __u32 mantisa:23; |
- | |
| 42 | __u32 exp:8; |
- | |
| 43 | __u32 sign:1; |
- | |
| 44 | #else |
- | |
| 45 | #error "Unknown endians." |
- | |
| 46 | #endif |
- | |
| 47 | } parts __attribute__ ((packed)); |
- | |
| 48 | } float32; |
- | |
| 49 | - | ||
| 50 | typedef union { |
- | |
| 51 | double d; |
- | |
| 52 | struct { |
- | |
| 53 | #ifdef __BIG_ENDIAN__ |
- | |
| 54 | __u64 sign:1; |
- | |
| 55 | __u64 exp:11; |
- | |
| 56 | __u64 mantisa:52; |
- | |
| 57 | #elif defined __LITTLE_ENDIAN__ |
- | |
| 58 | __u64 mantisa:52; |
- | |
| 59 | __u64 exp:11; |
- | |
| 60 | __u64 sign:1; |
- | |
| 61 | #else |
- | |
| 62 | #error "Unknown endians." |
- | |
| 63 | #endif |
- | |
| 64 | } parts __attribute__ ((packed)); |
- | |
| 65 | } float64; |
- | |
| 66 | - | ||
| 67 | #define FLOAT32_MAX 0x7f800000 |
- | |
| 68 | #define FLOAT32_MIN 0xff800000 |
- | |
| 69 | #define FLOAT64_MAX |
- | |
| 70 | #define FLOAT64_MIN |
- | |
| 71 | - | ||
| 72 | #define FLOAT32_BIAS 0xF7 |
- | |
| 73 | #define FLOAT64_BIAS 0x3FF |
- | |
| 74 | #define FLOAT80_BIAS 0x3FFF |
- | |
| 75 | - | ||
| 76 | - | ||
| 77 | - | ||
| 78 | float __addsf3(float a, float b); |
32 | float __addsf3(float a, float b); |
| 79 | double __adddf3(double a, double b); |
33 | double __adddf3(double a, double b); |
| 80 | long double __addtf3(long double a, long double b); |
34 | long double __addtf3(long double a, long double b); |
| 81 | long double __addxf3(long double a, long double b); |
35 | long double __addxf3(long double a, long double b); |
| 82 | 36 | ||