| 1208 | } |
| 1209 | |
| 1210 | void FPU::FXTRACT() { |
| 1211 | extFloat80_t& d0 = getReg(top); |
| 1212 | |
| 1213 | if (F80_iszero(d0)) { |
| 1214 | d0 = fx80_ninf; |
| 1215 | PREP_PUSH(); |
| 1216 | regs[top] = fx80_zero; |
| 1217 | isRegCached[top] = false; |
| 1218 | } else { |
| 1219 | extFloat80_t exponent = i32_to_extF80((d0.signExp & 0x7fff) - 0x3fff); |
| 1220 | extFloat80_t mant = d0; |
| 1221 | mant.signExp &= ~0x7fff; |
| 1222 | mant.signExp |= 0x3fff; |
| 1223 | d0 = exponent; |
| 1224 | PREP_PUSH(); |
| 1225 | regs[top] = mant; |
| 1226 | isRegCached[top] = false; |
| 1227 | } |
| 1228 | } |
| 1229 | |
| 1230 | void FPU::FCHS() { |
| 1231 | if (isRegCached[top]) { |
no test coverage detected