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 |