Changeset 1266543 in mainline for softfloat/generic/conversion.c
- Timestamp:
- 2006-02-07T00:41:18Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 1a030b8
- Parents:
- b7e65d4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
softfloat/generic/conversion.c
rb7e65d4 r1266543 33 33 { 34 34 float64 result; 35 __u64 mant;35 __u64 frac; 36 36 37 37 result.parts.sign = a.parts.sign; 38 result.parts. mantisa = a.parts.mantisa;39 result.parts. mantisa <<= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE );38 result.parts.fraction = a.parts.fraction; 39 result.parts.fraction <<= (FLOAT64_FRACTION_SIZE - FLOAT32_FRACTION_SIZE ); 40 40 41 41 if ((isFloat32Infinity(a))||(isFloat32NaN(a))) { … … 49 49 /* normalize denormalized numbers */ 50 50 51 if (result.parts. mantisa== 0ll) { /* fix zero */51 if (result.parts.fraction == 0ll) { /* fix zero */ 52 52 result.parts.exp = 0ll; 53 53 return result; 54 54 } 55 55 56 mant = result.parts.mantisa;56 frac = result.parts.fraction; 57 57 58 while (!( mant& (0x10000000000000ll))) {59 mant<<= 1;58 while (!(frac & (0x10000000000000ll))) { 59 frac <<= 1; 60 60 --result.parts.exp; 61 61 }; 62 62 63 63 ++result.parts.exp; 64 result.parts. mantisa = mant;64 result.parts.fraction = frac; 65 65 }; 66 66 … … 73 73 float32 result; 74 74 __s32 exp; 75 __u64 mant;75 __u64 frac; 76 76 77 77 result.parts.sign = a.parts.sign; … … 82 82 83 83 if (isFloat64SigNaN(a)) { 84 result.parts. mantisa = 0x800000; /* set first bit of mantisanonzero */84 result.parts.fraction = 0x800000; /* set first bit of fraction nonzero */ 85 85 return result; 86 86 } 87 87 88 result.parts. mantisa = 0x1; /* mantisanonzero but its first bit is zero */88 result.parts.fraction = 0x1; /* fraction nonzero but its first bit is zero */ 89 89 return result; 90 90 }; 91 91 92 92 if (isFloat64Infinity(a)) { 93 result.parts. mantisa= 0;93 result.parts.fraction = 0; 94 94 result.parts.exp = 0xFF; 95 95 return result; … … 100 100 if (exp >= 0xFF) { 101 101 /*FIXME: overflow*/ 102 result.parts. mantisa= 0;102 result.parts.fraction = 0; 103 103 result.parts.exp = 0xFF; 104 104 return result; … … 111 111 112 112 exp *= -1; 113 if (exp > FLOAT32_ MANTISA_SIZE ) {113 if (exp > FLOAT32_FRACTION_SIZE ) { 114 114 /* FIXME: underflow */ 115 result.parts. mantisa= 0;115 result.parts.fraction = 0; 116 116 return result; 117 117 }; … … 119 119 /* denormalized */ 120 120 121 mant = a.parts.mantisa;122 mant|= 0x10000000000000ll; /* denormalize and set hidden bit */121 frac = a.parts.fraction; 122 frac |= 0x10000000000000ll; /* denormalize and set hidden bit */ 123 123 124 mant >>= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE + 1);124 frac >>= (FLOAT64_FRACTION_SIZE - FLOAT32_FRACTION_SIZE + 1); 125 125 126 126 while (exp > 0) { 127 127 --exp; 128 mant>>= 1;128 frac >>= 1; 129 129 }; 130 result.parts. mantisa = mant;130 result.parts.fraction = frac; 131 131 132 132 return result; … … 134 134 135 135 result.parts.exp = exp; 136 result.parts. mantisa = a.parts.mantisa >> (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE);136 result.parts.fraction = a.parts.fraction >> (FLOAT64_FRACTION_SIZE - FLOAT32_FRACTION_SIZE); 137 137 return result; 138 138 };
Note:
See TracChangeset
for help on using the changeset viewer.