diff options
author | Aurelien Jarno <aurelien@aurel32.net> | 2011-04-20 13:04:22 +0200 |
---|---|---|
committer | Aurelien Jarno <aurelien@aurel32.net> | 2011-04-25 11:18:33 +0200 |
commit | 326b9e98a391d542cc33c4c91782ff4ba51edfc5 (patch) | |
tree | b9cde2b1dea8db271bf7a0875aadf11bc1dcc75d /qint.c | |
parent | f6714d365da068481d83787b4044134ae2ec5dfd (diff) | |
download | qemu-326b9e98a391d542cc33c4c91782ff4ba51edfc5.zip qemu-326b9e98a391d542cc33c4c91782ff4ba51edfc5.tar.gz qemu-326b9e98a391d542cc33c4c91782ff4ba51edfc5.tar.bz2 |
softfloat: fix float*_scalnb() corner cases
float*_scalnb() were not taking into account all cases. This patch fixes
some corner cases:
- NaN values in input were not properly propagated and the invalid flag
not correctly raised. Use propagateFloat*NaN() for that.
- NaN or infinite values in input of floatx80_scalnb() were not correctly
detected due to a typo.
- The sum of exponent and n could overflow, leading to strange results.
Additionally having int16 defined to int make that happening for a very
small range of values. Fix that by saturating n to the maximum exponent
range, and using an explicit wider type if needed.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Diffstat (limited to 'qint.c')
0 files changed, 0 insertions, 0 deletions