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 ...
|
39626b0c | 14-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 | 14-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 ...
|
ceebc129 | 17-May-2021 |
David Hildenbrand <david@redhat.com> |
softfloat: Implement float128_(min|minnum|minnummag|max|maxnum|maxnummag)
The float128 implementation is straight-forward. Unfortuantely, we don't have any tests we can simply adjust/unlock.
Signed
softfloat: Implement float128_(min|minnum|minnummag|max|maxnum|maxnummag)
The float128 implementation is straight-forward. Unfortuantely, we don't have any tests we can simply adjust/unlock.
Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20210517142739.38597-24-david@redhat.com> [rth: Update for changed parts_minmax return value] Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
e1c4667a | 14-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 ...
|
37c954a1 | 14-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move uint_to_float to softfloat-parts.c.inc
Rename to parts$N_uint_to_float. Reimplement uint64_to_float128 with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed
softfloat: Move uint_to_float to softfloat-parts.c.inc
Rename to parts$N_uint_to_float. Reimplement uint64_to_float128 with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
e3689519 | 14-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move int_to_float to softfloat-parts.c.inc
Rename to parts$N_sint_to_float. Reimplement int{32,64}_to_float128 with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Revie
softfloat: Move int_to_float to softfloat-parts.c.inc
Rename to parts$N_sint_to_float. Reimplement int{32,64}_to_float128 with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
4ab4aef0 | 14-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move round_to_uint_and_pack to softfloat-parts.c.inc
Rename to parts$N_float_to_uint. Reimplement float128_to_uint{32,64}{_round_to_zero} with FloatParts128.
Reviewed-by: Alex Bennée <a
softfloat: Move round_to_uint_and_pack to softfloat-parts.c.inc
Rename to parts$N_float_to_uint. Reimplement float128_to_uint{32,64}{_round_to_zero} with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
60c8f726 | 25-May-2021 |
Richard Henderson <richard.henderson@linaro.org> |
softfpu: Add float_round_to_odd_inf
For Arm BFDOT and BFMMLA, we need a version of round-to-odd that overflows to infinity, instead of the max normal number.
Cc: Alex Bennée <alex.bennee@linaro.org
softfpu: Add float_round_to_odd_inf
For Arm BFDOT and BFMMLA, we need a version of round-to-odd that overflows to infinity, instead of the max normal number.
Cc: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210525225817.400336-6-richard.henderson@linaro.org Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
show more ...
|
463b3f0d | 14-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move round_to_int_and_pack to softfloat-parts.c.inc
Rename to parts$N_float_to_sint. Reimplement float128_to_int{32,64}{_round_to_zero} with FloatParts128.
Reviewed-by: Alex Bennée <ale
softfloat: Move round_to_int_and_pack to softfloat-parts.c.inc
Rename to parts$N_float_to_sint. Reimplement float128_to_int{32,64}{_round_to_zero} with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
afc34931 | 14-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move round_to_int to softfloat-parts.c.inc
At the same time, convert to pointers, split out parts$N_round_to_int_normal, define a macro for parts_round_to_int using QEMU_GENERIC.
This ne
softfloat: Move round_to_int to softfloat-parts.c.inc
At the same time, convert to pointers, split out parts$N_round_to_int_normal, define a macro for parts_round_to_int using QEMU_GENERIC.
This necessarily meant some rearrangement to the rount_to_{,u}int_and_pack routines, so go ahead and convert to parts_round_to_int_normal, which in turn allows cleaning up of the raised exception handling.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
9882ccaf | 13-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Convert float-to-float conversions with float128
Introduce parts_float_to_float_widen and parts_float_to_float_narrow. Use them for float128_to_float{32,64} and float{32,64}_to_float128.
softfloat: Convert float-to-float conversions with float128
Introduce parts_float_to_float_widen and parts_float_to_float_narrow. Use them for float128_to_float{32,64} and float{32,64}_to_float128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
c3f1875e | 13-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Split float_to_float
Split out parts_float_to_ahp and parts_float_to_float. Convert to pointers.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richa
softfloat: Split float_to_float
Split out parts_float_to_ahp and parts_float_to_float. Convert to pointers.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
ec961b81 | 11-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move div_floats to softfloat-parts.c.inc
Rename to parts$N_div. Implement float128_div with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Hender
softfloat: Move div_floats to softfloat-parts.c.inc
Rename to parts$N_div. Implement float128_div with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
463e45dc | 09-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Introduce sh[lr]_double primitives
Have x86_64 assembly for them, with a fallback. This avoids shuffling values through %cl in the x86 case.
Reviewed-by: Alex Bennée <alex.bennee@linaro.
softfloat: Introduce sh[lr]_double primitives
Have x86_64 assembly for them, with a fallback. This avoids shuffling values through %cl in the x86 case.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
dedd123c | 24-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move muladd_floats to softfloat-parts.c.inc
Rename to parts$N_muladd. Implement float128_muladd with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richa
softfloat: Move muladd_floats to softfloat-parts.c.inc
Rename to parts$N_muladd. Implement float128_muladd with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
aca84527 | 11-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move mul_floats to softfloat-parts.c.inc
Rename to parts$N_mul. Reimplement float128_mul with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Hend
softfloat: Move mul_floats to softfloat-parts.c.inc
Rename to parts$N_mul. Reimplement float128_mul with FloatParts128.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
3ff49e56 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Implement float128_add/sub via parts
Replace the existing Berkeley implementation with the FloatParts implementation.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Ric
softfloat: Implement float128_add/sub via parts
Replace the existing Berkeley implementation with the FloatParts implementation.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
da10a907 | 22-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move addsub_floats to softfloat-parts.c.inc
In preparation for implementing multiple sizes. Rename to parts_addsub, split out parts_add/sub_normal for future reuse with muladd.
Reviewed
softfloat: Move addsub_floats to softfloat-parts.c.inc
In preparation for implementing multiple sizes. Rename to parts_addsub, split out parts_add/sub_normal for future reuse with muladd.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
ee6959f2 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move round_canonical to softfloat-parts.c.inc
At the same time, convert to pointers, renaming to parts$N_uncanon, and define a macro for parts_uncanon using QEMU_GENERIC.
Reviewed-by: Al
softfloat: Move round_canonical to softfloat-parts.c.inc
At the same time, convert to pointers, renaming to parts$N_uncanon, and define a macro for parts_uncanon using QEMU_GENERIC.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
d46975bc | 08-Nov-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move sf_canonicalize to softfloat-parts.c.inc
At the same time, convert to pointers, rename to parts$N_canonicalize and define a macro for parts_canonicalize using QEMU_GENERIC.
Rearrang
softfloat: Move sf_canonicalize to softfloat-parts.c.inc
At the same time, convert to pointers, rename to parts$N_canonicalize and define a macro for parts_canonicalize using QEMU_GENERIC.
Rearrange the cases to recognize float_class_normal as early as possible.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
979582d0 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move pick_nan_muladd to softfloat-parts.c.inc
At the same time, convert to pointers, rename to pick_nan_muladd$N and define a macro for pick_nan_muladd using QEMU_GENERIC.
Reviewed-by: D
softfloat: Move pick_nan_muladd to softfloat-parts.c.inc
At the same time, convert to pointers, rename to pick_nan_muladd$N and define a macro for pick_nan_muladd using QEMU_GENERIC.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
22c355f4 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move pick_nan to softfloat-parts.c.inc
At the same time, convert to pointers, rename to parts$N_pick_nan and define a macro for parts_pick_nan using QEMU_GENERIC.
Reviewed-by: David Hild
softfloat: Move pick_nan to softfloat-parts.c.inc
At the same time, convert to pointers, rename to parts$N_pick_nan and define a macro for parts_pick_nan using QEMU_GENERIC.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
7c45bad8 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Move return_nan to softfloat-parts.c.inc
At the same time, convert to pointers, rename to return_nan$N and define a macro for return_nan using QEMU_GENERIC.
Reviewed-by: David Hildenbran
softfloat: Move return_nan to softfloat-parts.c.inc
At the same time, convert to pointers, rename to return_nan$N and define a macro for return_nan using QEMU_GENERIC.
Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
show more ...
|
e9034ea8 | 23-Oct-2020 |
Richard Henderson <richard.henderson@linaro.org> |
softfloat: Convert float128_default_nan to parts
Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> |