[Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding

Richard Henderson posted 4 patches 7 years, 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20180814002653.12828-1-richard.henderson@linaro.org
Test checkpatch failed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test docker-quick@centos7 passed
include/fpu/softfloat.h | 169 ++++++++----
fpu/softfloat.c         | 579 +++++++++++++++++++++++++++++++---------
target/arm/helper.c     | 130 ++++-----
3 files changed, 628 insertions(+), 250 deletions(-)
[Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by Richard Henderson 7 years, 2 months ago
In 88808a022c0, I tried to fix an overflow problem that affected float16
scaling by coverting first to float64 and then rounding after that.  

However, Laurent reported that -0x3ff40000000001 converted to float16
resulted in 0xfbfe instead of the expected 0xfbff.  This is caused by
the inexact conversion to float64.

Rather than build more logic into target/arm to compensate, just add
a function that takes a scaling parameter so that the whole thing is
done all at once with only one rounding.

I don't have a failing test case for the float-to-int paths, but it
seemed best to apply the same solution.


r~


Richard Henderson (4):
  softfloat: Add scaling int-to-float routines
  softfloat: Add scaling float-to-int routines
  target/arm: Use the int-to-float-scale softfloat routines
  target/arm: Use the float-to-int-scale softfloat routines

 include/fpu/softfloat.h | 169 ++++++++----
 fpu/softfloat.c         | 579 +++++++++++++++++++++++++++++++---------
 target/arm/helper.c     | 130 ++++-----
 3 files changed, 628 insertions(+), 250 deletions(-)

-- 
2.17.1


Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by no-reply@patchew.org 7 years, 2 months ago
Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20180814002653.12828-1-richard.henderson@linaro.org
Subject: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
709fbe603d target/arm: Use the float-to-int-scale softfloat routines
b158c8d737 target/arm: Use the int-to-float-scale softfloat routines
5f86798067 softfloat: Add scaling float-to-int routines
8ec3fc49ea softfloat: Add scaling int-to-float routines

=== OUTPUT BEGIN ===
Checking PATCH 1/4: softfloat: Add scaling int-to-float routines...
Checking PATCH 2/4: softfloat: Add scaling float-to-int routines...
Checking PATCH 3/4: target/arm: Use the int-to-float-scale softfloat routines...
Checking PATCH 4/4: target/arm: Use the float-to-int-scale softfloat routines...
ERROR: space prohibited before that close parenthesis ')'
#57: FILE: target/arm/helper.c:11531:
+                         get_float_rounding_mode(fpst), )

ERROR: space prohibited before that close parenthesis ')'
#63: FILE: target/arm/helper.c:11536:
+                         get_float_rounding_mode(fpst), )

total: 2 errors, 0 warnings, 142 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by no-reply@patchew.org 7 years, 2 months ago
Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20180814002653.12828-1-richard.henderson@linaro.org
Subject: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
776a29ed02 target/arm: Use the float-to-int-scale softfloat routines
c08c4abc59 target/arm: Use the int-to-float-scale softfloat routines
71c42653c5 softfloat: Add scaling float-to-int routines
040490a28a softfloat: Add scaling int-to-float routines

=== OUTPUT BEGIN ===
Checking PATCH 1/4: softfloat: Add scaling int-to-float routines...
Checking PATCH 2/4: softfloat: Add scaling float-to-int routines...
Checking PATCH 3/4: target/arm: Use the int-to-float-scale softfloat routines...
Checking PATCH 4/4: target/arm: Use the float-to-int-scale softfloat routines...
ERROR: space prohibited before that close parenthesis ')'
#58: FILE: target/arm/helper.c:11585:
+                         get_float_rounding_mode(fpst), )

ERROR: space prohibited before that close parenthesis ')'
#64: FILE: target/arm/helper.c:11590:
+                         get_float_rounding_mode(fpst), )

total: 2 errors, 0 warnings, 142 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by Peter Maydell 7 years, 2 months ago
On 14 August 2018 at 01:26, Richard Henderson
<richard.henderson@linaro.org> wrote:
> In 88808a022c0, I tried to fix an overflow problem that affected float16
> scaling by coverting first to float64 and then rounding after that.
>
> However, Laurent reported that -0x3ff40000000001 converted to float16
> resulted in 0xfbfe instead of the expected 0xfbff.  This is caused by
> the inexact conversion to float64.
>
> Rather than build more logic into target/arm to compensate, just add
> a function that takes a scaling parameter so that the whole thing is
> done all at once with only one rounding.
>
> I don't have a failing test case for the float-to-int paths, but it
> seemed best to apply the same solution.
>
>
> r~
>
>
> Richard Henderson (4):
>   softfloat: Add scaling int-to-float routines
>   softfloat: Add scaling float-to-int routines
>   target/arm: Use the int-to-float-scale softfloat routines
>   target/arm: Use the float-to-int-scale softfloat routines

series
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>

and applied to target-arm.next.

thanks
-- PMM

Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by Alex Bennée 7 years, 2 months ago
Richard Henderson <richard.henderson@linaro.org> writes:

> In 88808a022c0, I tried to fix an overflow problem that affected float16
> scaling by coverting first to float64 and then rounding after that.
>
> However, Laurent reported that -0x3ff40000000001 converted to float16
> resulted in 0xfbfe instead of the expected 0xfbff.  This is caused by
> the inexact conversion to float64.
>
> Rather than build more logic into target/arm to compensate, just add
> a function that takes a scaling parameter so that the whole thing is
> done all at once with only one rounding.
>
> I don't have a failing test case for the float-to-int paths, but it
> seemed best to apply the same solution.

Can't we add the constants to the fcvt test case?

>
>
> r~
>
>
> Richard Henderson (4):
>   softfloat: Add scaling int-to-float routines
>   softfloat: Add scaling float-to-int routines
>   target/arm: Use the int-to-float-scale softfloat routines
>   target/arm: Use the float-to-int-scale softfloat routines
>
>  include/fpu/softfloat.h | 169 ++++++++----
>  fpu/softfloat.c         | 579 +++++++++++++++++++++++++++++++---------
>  target/arm/helper.c     | 130 ++++-----
>  3 files changed, 628 insertions(+), 250 deletions(-)


--
Alex Bennée

Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by Richard Henderson 7 years, 2 months ago
On 08/14/2018 01:32 AM, Alex Bennée wrote:
> Can't we add the constants to the fcvt test case?

No, they're all half-to-integer.  This is integer-to-half.

We could write another one, I suppose, but it's not just
an add-one-line kind of thing.


r~

Re: [Qemu-devel] [PATCH 0/4] target/arm: Fix int64_to_float16 double-rounding
Posted by Alex Bennée 7 years, 2 months ago
Richard Henderson <richard.henderson@linaro.org> writes:

> On 08/14/2018 01:32 AM, Alex Bennée wrote:
>> Can't we add the constants to the fcvt test case?
>
> No, they're all half-to-integer.  This is integer-to-half.

I'll add the int-to-float conversions, the whole thing could do with a
bit of a re-factor anyway.

>
> We could write another one, I suppose, but it's not just
> an add-one-line kind of thing.
>
>
> r~


--
Alex Bennée