Changeset 1b20da0 in mainline for uspace/lib/softfloat/add.c
- Timestamp:
- 2018-02-28T17:52:03Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 3061bc1
- Parents:
- df6ded8
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:26:03)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:52:03)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/softfloat/add.c
rdf6ded8 r1b20da0 60 60 } 61 61 62 if (b.parts.exp == FLOAT32_MAX_EXPONENT) { 62 if (b.parts.exp == FLOAT32_MAX_EXPONENT) { 63 63 return b; 64 64 } … … 77 77 } 78 78 79 if (a.parts.exp == FLOAT32_MAX_EXPONENT) { 79 if (a.parts.exp == FLOAT32_MAX_EXPONENT) { 80 80 return a; 81 81 } … … 105 105 } else { 106 106 /* add hidden bit to second operand */ 107 frac2 |= FLOAT32_HIDDEN_BIT_MASK; 107 frac2 |= FLOAT32_HIDDEN_BIT_MASK; 108 108 } 109 109 … … 129 129 frac1 += (0x1 << 5); 130 130 131 if (frac1 & (FLOAT32_HIDDEN_BIT_MASK << 7)) { 131 if (frac1 & (FLOAT32_HIDDEN_BIT_MASK << 7)) { 132 132 /* rounding overflow */ 133 133 ++exp1; … … 145 145 146 146 /* Clear hidden bit and shift */ 147 a.parts.fraction = ((frac1 >> 6) & (~FLOAT32_HIDDEN_BIT_MASK)); 147 a.parts.fraction = ((frac1 >> 6) & (~FLOAT32_HIDDEN_BIT_MASK)); 148 148 return a; 149 149 } … … 190 190 191 191 /* a is infinity and b not */ 192 if (a.parts.exp == FLOAT64_MAX_EXPONENT) { 192 if (a.parts.exp == FLOAT64_MAX_EXPONENT) { 193 193 return a; 194 194 } … … 203 203 /* both are denormalized */ 204 204 frac1 += frac2; 205 if (frac1 & FLOAT64_HIDDEN_BIT_MASK) { 205 if (frac1 & FLOAT64_HIDDEN_BIT_MASK) { 206 206 /* result is not denormalized */ 207 207 a.parts.exp = 1; … … 217 217 if (exp2 == 0) { 218 218 /* ... is denormalized */ 219 --expdiff; 219 --expdiff; 220 220 } else { 221 221 /* is not denormalized */ … … 242 242 243 243 /* rounding - if first bit after fraction is set then round up */ 244 frac1 += (0x1 << 5); 245 246 if (frac1 & (FLOAT64_HIDDEN_BIT_MASK << 7)) { 244 frac1 += (0x1 << 5); 245 246 if (frac1 & (FLOAT64_HIDDEN_BIT_MASK << 7)) { 247 247 /* rounding overflow */ 248 248 ++exp1;
Note:
See TracChangeset
for help on using the changeset viewer.