mirror of
https://github.com/netwide-assembler/nasm.git
synced 2025-01-18 16:25:05 +08:00
BR 3392399: float: get rid of bogus exponent calculation
It turns out that the calculation of "twopwr" in ieee_flconvert_bin() was more complex than necessary, and wrong in the case of a pure fraction. Reported-by: Roel <roelsuidgeest@zonnet.nl> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
This commit is contained in:
parent
90cc4154ae
commit
3646e7dde0
@ -1,6 +1,6 @@
|
||||
/* ----------------------------------------------------------------------- *
|
||||
*
|
||||
* Copyright 1996-2009 The NASM Authors - All Rights Reserved
|
||||
* Copyright 1996-2017 The NASM Authors - All Rights Reserved
|
||||
* See the file AUTHORS included with the NASM distribution for
|
||||
* the specific copyright holders.
|
||||
*
|
||||
@ -545,7 +545,7 @@ static bool ieee_flconvert_bin(const char *string, int bits,
|
||||
mp = mult;
|
||||
ms = (LIMB_BITS-1)-l;
|
||||
|
||||
twopwr = seendot ? twopwr-bits+l : l+1-bits;
|
||||
twopwr += l+1-bits;
|
||||
}
|
||||
|
||||
if (seendigit) {
|
||||
|
25
test/hexfp.asm
Normal file
25
test/hexfp.asm
Normal file
@ -0,0 +1,25 @@
|
||||
;; BR 3392399
|
||||
|
||||
; All of these should be the same value...
|
||||
%macro fp 1
|
||||
%1 0.5
|
||||
%1 5e-1
|
||||
%1 0x1.0p-1
|
||||
%1 0x0.8p0
|
||||
%1 0x0.8
|
||||
%1 0x8p-4
|
||||
%1 0x.8
|
||||
%1 0x1p-1
|
||||
%1 0x0.1p3
|
||||
%1 0x0.01p7
|
||||
%1 0x0.01p7
|
||||
%1 0x0.001p11
|
||||
|
||||
%endmacro
|
||||
|
||||
fp do
|
||||
fp dt
|
||||
fp dq
|
||||
fp dd
|
||||
fp dw
|
||||
fp dd
|
Loading…
Reference in New Issue
Block a user