qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 00/72] Convert floatx80 and float128 to FloatParts


From: Alex Bennée
Subject: Re: [PATCH 00/72] Convert floatx80 and float128 to FloatParts
Date: Mon, 10 May 2021 14:36:25 +0100
User-agent: mu4e 1.5.13; emacs 28.0.50

Richard Henderson <richard.henderson@linaro.org> writes:

> Reorg everything using QEMU_GENERIC and multiple inclusion to
> reduce the amount of code duplication between the formats.
>
> The use of QEMU_GENERIC means that we need to use pointers instead
> of structures, which means that even the smaller float formats
> need rearranging.
>
> I've carried it through to completion within fpu/, so that we don't
> have (much) of the legacy code remaining.  There is some floatx80
> stuff in target/m68k and target/i386 that's still hanging around.

FWIW I could enable a few more tests although extF80_lt_quiet still has
some failures on equality tests:

./tests/fp/fp-test -l 1 -r all extF80_lt_quiet
>> Testing extF80_lt_quiet
46464 tests total.
Errors found in extF80_lt_quiet:
+0000.0000000000000000  +0000.0000000000000000  => 1 .....  expected 0 .....
+0000.0000000000000000  -0000.0000000000000000  => 1 .....  expected 0 .....
+0000.0000000000000001  +0000.0000000000000001  => 1 .....  expected 0 .....
+0000.7FFFFFFFFFFFFFFF  +0000.7FFFFFFFFFFFFFFF  => 1 .....  expected 0 .....
+0000.7FFFFFFFFFFFFFFE  +0000.7FFFFFFFFFFFFFFE  => 1 .....  expected 0 .....
+0001.8000000000000000  +0001.8000000000000000  => 1 .....  expected 0 .....
+0001.8000000000000001  +0001.8000000000000001  => 1 .....  expected 0 .....
+0001.FFFFFFFFFFFFFFFF  +0001.FFFFFFFFFFFFFFFF  => 1 .....  expected 0 .....
+0001.FFFFFFFFFFFFFFFE  +0001.FFFFFFFFFFFFFFFE  => 1 .....  expected 0 .....
+3FBF.8000000000000000  +3FBF.8000000000000000  => 1 .....  expected 0 .....
+3FBF.8000000000000001  +3FBF.8000000000000001  => 1 .....  expected 0 .....
+3FBF.FFFFFFFFFFFFFFFF  +3FBF.FFFFFFFFFFFFFFFF  => 1 .....  expected 0 .....
+3FBF.FFFFFFFFFFFFFFFE  +3FBF.FFFFFFFFFFFFFFFE  => 1 .....  expected 0 .....
+3FFD.8000000000000000  +3FFD.8000000000000000  => 1 .....  expected 0 .....
+3FFD.8000000000000001  +3FFD.8000000000000001  => 1 .....  expected 0 .....
+3FFD.FFFFFFFFFFFFFFFF  +3FFD.FFFFFFFFFFFFFFFF  => 1 .....  expected 0 .....
+3FFD.FFFFFFFFFFFFFFFE  +3FFD.FFFFFFFFFFFFFFFE  => 1 .....  expected 0 .....
+3FFE.8000000000000000  +3FFE.8000000000000000  => 1 .....  expected 0 .....
+3FFE.8000000000000001  +3FFE.8000000000000001  => 1 .....  expected 0 .....
+3FFE.FFFFFFFFFFFFFFFF  +3FFE.FFFFFFFFFFFFFFFF  => 1 .....  expected 0 .....
9618 tests performed; 20 errors found.

However the rest can be enabled:

tests/fp: enable more tests

Signed-off-by: Alex Bennée <alex.bennee@linaro.org>

1 file changed, 6 insertions(+), 6 deletions(-)
tests/fp/meson.build | 12 ++++++------

modified   tests/fp/meson.build
@@ -556,7 +556,9 @@ softfloat_conv_tests = {
                       'extF80_to_f64 extF80_to_f128 ' +
                       'f128_to_f16',
     'int-to-float': 'i32_to_f16 i64_to_f16 i32_to_f32 i64_to_f32 ' +
-                    'i32_to_f64 i64_to_f64 i32_to_f128 i64_to_f128',
+                    'i32_to_f64 i64_to_f64 ' +
+                    'i32_to_extF80 i64_to_extF80 ' +
+                    'i32_to_f128 i64_to_f128',
     'uint-to-float': 'ui32_to_f16 ui64_to_f16 ui32_to_f32 ui64_to_f32 ' +
                      'ui32_to_f64 ui64_to_f64 ui64_to_f128 ' +
                      'ui32_to_extF80 ui64_to_extF80',
@@ -581,7 +583,7 @@ softfloat_conv_tests = {
                      'extF80_to_ui64 extF80_to_ui64_r_minMag ' +
                      'f128_to_ui64 f128_to_ui64_r_minMag',
     'round-to-integer': 'f16_roundToInt f32_roundToInt ' +
-                        'f64_roundToInt f128_roundToInt'
+                        'f64_roundToInt extF80_roundToInt f128_roundToInt'
 }
 softfloat_tests = {
     'eq_signaling' : 'compare',
@@ -602,18 +604,16 @@ fptest_args = ['-s', '-l', '1']
 fptest_rounding_args = ['-r', 'all']
 
 # Conversion Routines:
-# FIXME: i32_to_extF80 (broken), i64_to_extF80 (broken)
-#        extF80_roundToInt (broken)
 foreach k, v : softfloat_conv_tests
   test('fp-test-' + k, fptest,
        args: fptest_args + fptest_rounding_args + v.split(),
        suite: ['softfloat', 'softfloat-conv'])
 endforeach
 
-# FIXME: extF80_{lt_quiet, rem} (broken),
+# FIXME: extF80_{lt_quiet} (broken),
 #        extF80_{mulAdd} (missing)
 foreach k, v : softfloat_tests
-  extF80_broken = ['lt_quiet', 'rem'].contains(k)
+  extF80_broken = ['lt_quiet'].contains(k)
   test('fp-test-' + k, fptest,
        args: fptest_args + fptest_rounding_args +
              ['f16_' + k, 'f32_' + k, 'f64_' + k, 'f128_' + k] +

-- 
Alex Bennée



reply via email to

[Prev in Thread] Current Thread [Next in Thread]