Revision tags: v8.1.0 |
|
#
72246065 |
| 21-Aug-2023 |
Richard Henderson <richard.henderson@linaro.org> |
fpu: Handle m68k extended precision denormals properly
Motorola treats denormals with explicit integer bit set as having unbiased exponent 0, unlike Intel which treats it as having unbiased exponent
fpu: Handle m68k extended precision denormals properly
Motorola treats denormals with explicit integer bit set as having unbiased exponent 0, unlike Intel which treats it as having unbiased exponent 1 (more like all other IEEE formats that have no explicit integer bit).
Add a flag on FloatFmt to differentiate the behaviour.
Reported-by: Keith Packard <keithp@keithp.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
Revision tags: v8.1.0 |
|
#
72246065 |
| 21-Aug-2023 |
Richard Henderson <richard.henderson@linaro.org> |
fpu: Handle m68k extended precision denormals properly
Motorola treats denormals with explicit integer bit set as having unbiased exponent 0, unlike Intel which treats it as having unbiased exponent
fpu: Handle m68k extended precision denormals properly
Motorola treats denormals with explicit integer bit set as having unbiased exponent 0, unlike Intel which treats it as having unbiased exponent 1 (more like all other IEEE formats that have no explicit integer bit).
Add a flag on FloatFmt to differentiate the behaviour.
Reported-by: Keith Packard <keithp@keithp.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
Revision tags: v8.1.0-rc4, v8.1.0-rc3, v7.2.5, v8.0.4, v8.1.0-rc2, v8.1.0-rc1, v8.1.0-rc0, v8.0.3, v7.2.4, v8.0.2, v8.0.1, v7.2.3 |
|
#
e2041f4d |
| 27-May-2023 |
Richard Henderson <richard.henderson@linaro.org> |
fpu: Add float64_to_int{32,64}_modulo
Add versions of float64_to_int* which do not saturate the result.
Reviewed-by: Christoph Muellner <christoph.muellner@vrull.eu> Tested-by: Christoph Muellner <
fpu: Add float64_to_int{32,64}_modulo
Add versions of float64_to_int* which do not saturate the result.
Reviewed-by: Christoph Muellner <christoph.muellner@vrull.eu> Tested-by: Christoph Muellner <christoph.muellner@vrull.eu> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Message-Id: <20230527141910.1885950-2-richard.henderson@linaro.org>
show more ...
|
Revision tags: v7.2.2, v8.0.0, v8.0.0-rc4, v8.0.0-rc3, v7.2.1, v8.0.0-rc2, v8.0.0-rc1, v8.0.0-rc0, v7.2.0, v7.2.0-rc4, v7.2.0-rc3, v7.2.0-rc2, v7.2.0-rc1, v7.2.0-rc0 |
|
#
3cf71969 |
| 30-Sep-2022 |
Song Gao <gaosong@loongson.cn> |
softfloat: logB(0) should raise divideByZero exception
logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3
Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-
softfloat: logB(0) should raise divideByZero exception
logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3
Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220930024510.800005-4-gaosong@loongson.cn>
show more ...
|
Revision tags: v7.2.2, v8.0.0, v8.0.0-rc4, v8.0.0-rc3, v7.2.1, v8.0.0-rc2, v8.0.0-rc1, v8.0.0-rc0, v7.2.0, v7.2.0-rc4, v7.2.0-rc3, v7.2.0-rc2, v7.2.0-rc1, v7.2.0-rc0 |
|
#
3cf71969 |
| 30-Sep-2022 |
Song Gao <gaosong@loongson.cn> |
softfloat: logB(0) should raise divideByZero exception
logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3
Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-
softfloat: logB(0) should raise divideByZero exception
logB(0) should raise divideByZero exception from IEEE 754-2008 spec 7.3
Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220930024510.800005-4-gaosong@loongson.cn>
show more ...
|
Revision tags: v7.1.0, v7.1.0-rc4, v7.1.0-rc3, v7.1.0-rc2 |
|
#
c40da5c6 |
| 05-Aug-2022 |
Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> |
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate resu
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate result should have 3/4 of the total range subtracted from the exponent. The same for underflow but it should be added to the exponent of the intermediate number instead.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220805141522.412864-2-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
show more ...
|
Revision tags: v7.1.0, v7.1.0-rc4, v7.1.0-rc3, v7.1.0-rc2 |
|
#
c40da5c6 |
| 05-Aug-2022 |
Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> |
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate resu
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate result should have 3/4 of the total range subtracted from the exponent. The same for underflow but it should be added to the exponent of the intermediate number instead.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220805141522.412864-2-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
show more ...
|
Revision tags: v7.1.0, v7.1.0-rc4, v7.1.0-rc3, v7.1.0-rc2 |
|
#
c40da5c6 |
| 05-Aug-2022 |
Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> |
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate resu
fpu: Add rebias bool, value and operation
Added the possibility of recalculating a result if it overflows or underflows, if the result overflow and the rebias bool is true then the intermediate result should have 3/4 of the total range subtracted from the exponent. The same for underflow but it should be added to the exponent of the intermediate number instead.
Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220805141522.412864-2-lucas.araujo@eldorado.org.br> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
show more ...
|
Revision tags: v7.1.0-rc1, v7.1.0-rc0, v7.0.0, v7.0.0-rc4, v7.0.0-rc3 |
|
#
9343c884 |
| 01-Apr-2022 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Use FloatRelation within partsN_compare
As the return type is FloatRelation, it's clearer to use the type for 'cmp' within the function.
Signed-off-by: Richard Henderson <richard.henders
softfloat: Use FloatRelation within partsN_compare
As the return type is FloatRelation, it's clearer to use the type for 'cmp' within the function.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20220401132240.79730-3-richard.henderson@linaro.org>
show more ...
|
Revision tags: v7.0.0-rc2, v7.0.0-rc1, v7.0.0-rc0, v6.1.1 |
|
#
e706d445 |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flag specific to signaling nans
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message
softfloat: Add flag specific to signaling nans
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-8-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
#
81254b02 |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flag specific to convert non-nan to int
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
softfloat: Add flag specific to convert non-nan to int
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-7-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
#
f8718aab |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flag specific to sqrt(-x)
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <
softfloat: Add flag specific to sqrt(-x)
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-6-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
#
10cc9640 |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flags specific to Inf / Inf and 0 / 0
PowerPC has these flags, and it's easier to compute them here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.or
softfloat: Add flags specific to Inf / Inf and 0 / 0
PowerPC has these flags, and it's easier to compute them here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-5-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
#
bead3c9b |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flag specific to Inf * 0
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <2
softfloat: Add flag specific to Inf * 0
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-4-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
#
ba11446c |
| 17-Dec-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Add flag specific to Inf - Inf
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id:
softfloat: Add flag specific to Inf - Inf
PowerPC has this flag, and it's easier to compute it here than after the fact.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211119160502.17432-3-richard.henderson@linaro.org> Signed-off-by: Cédric Le Goater <clg@kaod.org>
show more ...
|
Revision tags: v6.2.0, v6.2.0-rc4, v6.2.0-rc3, v6.2.0-rc2, v6.2.0-rc1, v6.2.0-rc0, v6.0.1 |
|
#
0e903037 |
| 21-Oct-2021 |
Chih-Min Chao <chihmin.chao@sifive.com> |
softfloat: add APIs to handle alternative sNaN propagation for fmax/fmin
For "fmax/fmin ft0, ft1, ft2" and if one of the inputs is sNaN,
The original logic: Return NaN and set invalid flag if
softfloat: add APIs to handle alternative sNaN propagation for fmax/fmin
For "fmax/fmin ft0, ft1, ft2" and if one of the inputs is sNaN,
The original logic: Return NaN and set invalid flag if ft1 == sNaN || ft2 == sNan.
The alternative path: Set invalid flag if ft1 == sNaN || ft2 == sNaN. Return NaN only if ft1 == NaN && ft2 == NaN.
The IEEE 754 spec allows both implementation and some architecture such as riscv choose different defintions in two spec versions. (riscv-spec-v2.2 use original version, riscv-spec-20191213 changes to alternative)
Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com> Signed-off-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20211021160847.2748577-2-frank.chang@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
show more ...
|
Revision tags: v6.1.0, v6.1.0-rc4, v6.1.0-rc3, v6.1.0-rc2, v6.1.0-rc1, v6.1.0-rc0 |
|
#
feaf2e9c |
| 08-May-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Convert modrem operations to FloatParts
Rename to parts$N_modrem. This was the last use of a lot of the legacy infrastructure, so remove it as required.
Reviewed-by: Alex Bennée <alex.b
softfloat: Convert modrem operations to FloatParts
Rename to parts$N_modrem. This was the last use of a lot of the legacy infrastructure, so remove it as required.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
Revision tags: v6.0.0, v6.0.0-rc5, v6.0.0-rc4, v6.0.0-rc3, v6.0.0-rc2, v6.0.0-rc1, v6.0.0-rc0, v5.2.0, v5.2.0-rc4, v5.2.0-rc3 |
|
#
2fa3546c |
| 22-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move floatN_log2 to softfloat-parts.c.inc
Rename to parts$N_log2. Though this is partly a ruse, since I do not believe the code will succeed for float128 without work. Which is ok for n
softfloat: Move floatN_log2 to softfloat-parts.c.inc
Rename to parts$N_log2. Though this is partly a ruse, since I do not believe the code will succeed for float128 without work. Which is ok for now, because we do not need this for more than float32 and float64.
Since berkeley-testfloat-3 doesn't support log2, compare float64_log2 vs the system log2. Fix the errors for inputs near 1.0:
test: 3ff00000000000b0 +0x1.00000000000b0p+0 sf: 3d2fa00000000000 +0x1.fa00000000000p-45 libm: 3d2fbd422b1bd36f +0x1.fbd422b1bd36fp-45 Error in fraction: 32170028290927 ulp
test: 3feec24f6770b100 +0x1.ec24f6770b100p-1 sf: bfad3740d13c9ec0 -0x1.d3740d13c9ec0p-5 libm: bfad3740d13c9e98 -0x1.d3740d13c9e98p-5 Error in fraction: 40 ulp
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
98b3cff7 |
| 22-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Adjust parts_uncanon_normal for floatx80
With floatx80_precision_x, the rounding happens across the break between words. Notice this case with
frac_lsb = round_mask + 1 -> 0
and chec
softfloat: Adjust parts_uncanon_normal for floatx80
With floatx80_precision_x, the rounding happens across the break between words. Notice this case with
frac_lsb = round_mask + 1 -> 0
and check the bits in frac_hi as needed.
In addition, since frac_shift == 0, we won't implicitly clear round_mask via the right-shift, so explicitly clear those bits. This fixes rounding for floatx80_precision_[sd].
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
d6e1f0cd |
| 21-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Reduce FloatFmt
Remove frac_lsb, frac_lsbm1, roundeven_mask. Compute these from round_mask in parts$N_uncanon_normal.
With floatx80, round_mask will not be tied to frac_shift. Everythin
softfloat: Reduce FloatFmt
Remove frac_lsb, frac_lsbm1, roundeven_mask. Compute these from round_mask in parts$N_uncanon_normal.
With floatx80, round_mask will not be tied to frac_shift. Everything else is easily computable.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
25fdedf0 |
| 20-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Split out parts_uncanon_normal
We will need to treat the non-normal cases of floatx80 specially, so split out the normal case that we can reuse.
Reviewed-by: Alex Bennée <alex.bennee@lin
softfloat: Split out parts_uncanon_normal
We will need to treat the non-normal cases of floatx80 specially, so split out the normal case that we can reuse.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
9261b245 |
| 18-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move sqrt_float to softfloat-parts.c.inc
Rename to parts$N_sqrt. Reimplement float128_sqrt with FloatParts128.
Reimplement with the inverse sqrt newton-raphson algorithm from musl. This
softfloat: Move sqrt_float to softfloat-parts.c.inc
Rename to parts$N_sqrt. Reimplement float128_sqrt with FloatParts128.
Reimplement with the inverse sqrt newton-raphson algorithm from musl. This is significantly faster than even the berkeley sqrt n-r algorithm, because it does not use division instructions, only multiplication.
Ordinarily, changing algorithms at the same time as migrating code is a bad idea, but this is the only way I found that didn't break one of the routines at the same time.
Tested-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
Revision tags: v5.2.0-rc2 |
|
#
39626b0c |
| 15-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move scalbn_decomposed to softfloat-parts.c.inc
Rename to parts$N_scalbn. Reimplement float128_scalbn with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by:
softfloat: Move scalbn_decomposed to softfloat-parts.c.inc
Rename to parts$N_scalbn. Reimplement float128_scalbn with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
6eb169b8 |
| 15-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move compare_floats to softfloat-parts.c.inc
Rename to parts$N_compare. Rename all of the intermediate functions to ftype_do_compare. Rename the hard-float functions to ftype_hs_compare
softfloat: Move compare_floats to softfloat-parts.c.inc
Rename to parts$N_compare. Rename all of the intermediate functions to ftype_do_compare. Rename the hard-float functions to ftype_hs_compare. Convert float128 to FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
#
e1c4667a |
| 15-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move minmax_flags to softfloat-parts.c.inc
Rename to parts$N_minmax. Combine 3 bool arguments to a bitmask. Introduce ftype_minmax functions as a common optimization point. Fold bfloat16
softfloat: Move minmax_flags to softfloat-parts.c.inc
Rename to parts$N_minmax. Combine 3 bool arguments to a bitmask. Introduce ftype_minmax functions as a common optimization point. Fold bfloat16 expansions into the same macro as the other types.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|