* [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x
@ 2012-12-31 18:09 Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
` (3 more replies)
0 siblings, 4 replies; 12+ messages in thread
From: Richard Henderson @ 2012-12-31 18:09 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl
Changes v3-v4:
Rebase after source tree rearrangements.
Changes v2-v3:
Ignore softfloat "style" completely. Code now formatted per QEMU.
Changes v1-v2:
Incorporating feedback from Peter Maydell (previously missed in
the 140+ message thread).
r~
Richard Henderson (2):
softfloat: Fix uint64_to_float64
softfloat: Implement uint64_to_float128
fpu/softfloat.c | 21 ++++++++++++++++++---
include/fpu/softfloat.h | 3 +++
2 files changed, 21 insertions(+), 3 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-31 18:09 [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
@ 2012-12-31 18:09 ` Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 2/2] softfloat: Implement uint64_to_float128 Richard Henderson
` (2 subsequent siblings)
3 siblings, 0 replies; 12+ messages in thread
From: Richard Henderson @ 2012-12-31 18:09 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl
The interface to normalizeRoundAndPackFloat64 requires that the
high bit be clear. Perform one shift-right-and-jam if needed.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
fpu/softfloat.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 0cfa6b4..20b05d4 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1271,11 +1271,18 @@ float64 int64_to_float64( int64 a STATUS_PARAM )
}
-float64 uint64_to_float64( uint64 a STATUS_PARAM )
+float64 uint64_to_float64(uint64 a STATUS_PARAM)
{
- if ( a == 0 ) return float64_zero;
- return normalizeRoundAndPackFloat64( 0, 0x43C, a STATUS_VAR );
+ int exp = 0x43C;
+ if (a == 0) {
+ return float64_zero;
+ }
+ if ((int64_t)a < 0) {
+ shift64RightJamming(a, 1, &a);
+ exp += 1;
+ }
+ return normalizeRoundAndPackFloat64(0, exp, a STATUS_VAR);
}
/*----------------------------------------------------------------------------
--
1.7.11.7
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 2/2] softfloat: Implement uint64_to_float128
2012-12-31 18:09 [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
@ 2012-12-31 18:09 ` Richard Henderson
2013-01-04 19:06 ` [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
2013-01-05 12:15 ` Blue Swirl
3 siblings, 0 replies; 12+ messages in thread
From: Richard Henderson @ 2012-12-31 18:09 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
fpu/softfloat.c | 8 ++++++++
include/fpu/softfloat.h | 3 +++
2 files changed, 11 insertions(+)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 20b05d4..ac3d150 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1339,6 +1339,14 @@ float128 int64_to_float128( int64 a STATUS_PARAM )
}
+float128 uint64_to_float128(uint64 a STATUS_PARAM)
+{
+ if (a == 0) {
+ return float128_zero;
+ }
+ return normalizeRoundAndPackFloat128(0, 0x406E, a, 0 STATUS_VAR);
+}
+
/*----------------------------------------------------------------------------
| Returns the result of converting the single-precision floating-point value
| `a' to the 32-bit two's complement integer format. The conversion is
diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h
index 0946f07..f3927e2 100644
--- a/include/fpu/softfloat.h
+++ b/include/fpu/softfloat.h
@@ -237,6 +237,7 @@ float64 int64_to_float64( int64 STATUS_PARAM );
float64 uint64_to_float64( uint64 STATUS_PARAM );
floatx80 int64_to_floatx80( int64 STATUS_PARAM );
float128 int64_to_float128( int64 STATUS_PARAM );
+float128 uint64_to_float128( uint64 STATUS_PARAM );
/*----------------------------------------------------------------------------
| Software half-precision conversion routines.
@@ -630,6 +631,8 @@ INLINE int float128_is_any_nan(float128 a)
((a.low != 0) || ((a.high & 0xffffffffffffLL) != 0));
}
+#define float128_zero make_float128(0, 0)
+
/*----------------------------------------------------------------------------
| The pattern for a default generated quadruple-precision NaN.
*----------------------------------------------------------------------------*/
--
1.7.11.7
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x
2012-12-31 18:09 [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 2/2] softfloat: Implement uint64_to_float128 Richard Henderson
@ 2013-01-04 19:06 ` Richard Henderson
2013-01-05 12:15 ` Blue Swirl
3 siblings, 0 replies; 12+ messages in thread
From: Richard Henderson @ 2013-01-04 19:06 UTC (permalink / raw)
To: qemu-devel; +Cc: Blue Swirl
Ping.
r~
On 12/31/2012 10:09 AM, Richard Henderson wrote:
> Changes v3-v4:
> Rebase after source tree rearrangements.
>
> Changes v2-v3:
> Ignore softfloat "style" completely. Code now formatted per QEMU.
>
> Changes v1-v2:
> Incorporating feedback from Peter Maydell (previously missed in
> the 140+ message thread).
>
>
> r~
>
>
> Richard Henderson (2):
> softfloat: Fix uint64_to_float64
> softfloat: Implement uint64_to_float128
>
> fpu/softfloat.c | 21 ++++++++++++++++++---
> include/fpu/softfloat.h | 3 +++
> 2 files changed, 21 insertions(+), 3 deletions(-)
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x
2012-12-31 18:09 [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
` (2 preceding siblings ...)
2013-01-04 19:06 ` [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
@ 2013-01-05 12:15 ` Blue Swirl
3 siblings, 0 replies; 12+ messages in thread
From: Blue Swirl @ 2013-01-05 12:15 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel
Thanks, applied all.
On Mon, Dec 31, 2012 at 6:09 PM, Richard Henderson <rth@twiddle.net> wrote:
> Changes v3-v4:
> Rebase after source tree rearrangements.
>
> Changes v2-v3:
> Ignore softfloat "style" completely. Code now formatted per QEMU.
>
> Changes v1-v2:
> Incorporating feedback from Peter Maydell (previously missed in
> the 140+ message thread).
>
>
> r~
>
>
> Richard Henderson (2):
> softfloat: Fix uint64_to_float64
> softfloat: Implement uint64_to_float128
>
> fpu/softfloat.c | 21 ++++++++++++++++++---
> include/fpu/softfloat.h | 3 +++
> 2 files changed, 21 insertions(+), 3 deletions(-)
>
> --
> 1.7.11.7
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v3 0/2] soft-float-fixes for target-s390x
@ 2012-12-11 17:21 Richard Henderson
2012-12-11 17:21 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
0 siblings, 1 reply; 12+ messages in thread
From: Richard Henderson @ 2012-12-11 17:21 UTC (permalink / raw)
To: qemu-devel; +Cc: afaerber
Changes v2-v3:
Ignore softfloat "style" completely. Code now formatted per QEMU.
Changes v1-v2:
Incorporating feedback from Peter Maydell (previously missed in
the 140+ message thread).
r~
Richard Henderson (2):
softfloat: Fix uint64_to_float64
softfloat: Implement uint64_to_float128
fpu/softfloat.c | 21 ++++++++++++++++++---
fpu/softfloat.h | 3 +++
2 files changed, 21 insertions(+), 3 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-11 17:21 [Qemu-devel] [PATCH v3 " Richard Henderson
@ 2012-12-11 17:21 ` Richard Henderson
2012-12-11 17:34 ` Peter Maydell
0 siblings, 1 reply; 12+ messages in thread
From: Richard Henderson @ 2012-12-11 17:21 UTC (permalink / raw)
To: qemu-devel; +Cc: afaerber
The interface to normalizeRoundAndPackFloat64 requires that the
high bit be clear. Perform one shift-right-and-jam if needed.
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
fpu/softfloat.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 8413146..0daad0d 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1271,11 +1271,18 @@ float64 int64_to_float64( int64 a STATUS_PARAM )
}
-float64 uint64_to_float64( uint64 a STATUS_PARAM )
+float64 uint64_to_float64(uint64 a STATUS_PARAM)
{
- if ( a == 0 ) return float64_zero;
- return normalizeRoundAndPackFloat64( 0, 0x43C, a STATUS_VAR );
+ int exp = 0x43C;
+ if (a == 0) {
+ return float64_zero;
+ }
+ if ((int64_t)a < 0) {
+ shift64RightJamming(a, 1, &a);
+ exp += 1;
+ }
+ return normalizeRoundAndPackFloat64(0, exp, a STATUS_VAR);
}
/*----------------------------------------------------------------------------
--
1.7.11.7
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 0/2] soft-float fixes for target-s390x
@ 2012-12-07 21:52 Richard Henderson
2012-12-07 21:52 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
0 siblings, 1 reply; 12+ messages in thread
From: Richard Henderson @ 2012-12-07 21:52 UTC (permalink / raw)
To: qemu-devel
... or for upcoming s390x changes.
The s390x isa has insns for both signed and unsigned conversions
to all three (binary) floating point types. One of these was
missing and the other producing incorrect results.
Tested with the s390x rewrite on the gcc testsuite.
Changes v1-v2:
Incorporating feedback from Peter Maydell (previously missed in
the 140+ message thread).
r~
Richard Henderson (2):
softfloat: Fix uint64_to_float64
softfloat: Implement uint64_to_float128
fpu/softfloat.c | 17 +++++++++++++++--
fpu/softfloat.h | 3 +++
2 files changed, 18 insertions(+), 2 deletions(-)
--
1.7.11.7
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-07 21:52 [Qemu-devel] [PATCH v2 0/2] soft-float fixes for target-s390x Richard Henderson
@ 2012-12-07 21:52 ` Richard Henderson
2012-12-08 10:42 ` Peter Maydell
2012-12-08 14:48 ` Andreas Färber
0 siblings, 2 replies; 12+ messages in thread
From: Richard Henderson @ 2012-12-07 21:52 UTC (permalink / raw)
To: qemu-devel
The interface to normalizeRoundAndPackFloat64 requires that the
high bit be clear. Perform one shift-right-and-jam if needed.
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
fpu/softfloat.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 8413146..62830d7 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -1273,9 +1273,14 @@ float64 int64_to_float64( int64 a STATUS_PARAM )
float64 uint64_to_float64( uint64 a STATUS_PARAM )
{
- if ( a == 0 ) return float64_zero;
- return normalizeRoundAndPackFloat64( 0, 0x43C, a STATUS_VAR );
+ int exp = 0x43C;
+ if ( a == 0 ) return float64_zero;
+ if ( (int64_t)a < 0 ) {
+ shift64RightJamming(a, 1, &a);
+ exp += 1;
+ }
+ return normalizeRoundAndPackFloat64( 0, exp, a STATUS_VAR );
}
/*----------------------------------------------------------------------------
--
1.7.11.7
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-07 21:52 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
@ 2012-12-08 10:42 ` Peter Maydell
2012-12-08 14:48 ` Andreas Färber
1 sibling, 0 replies; 12+ messages in thread
From: Peter Maydell @ 2012-12-08 10:42 UTC (permalink / raw)
To: Richard Henderson; +Cc: qemu-devel
On 7 December 2012 21:52, Richard Henderson <rth@twiddle.net> wrote:
> The interface to normalizeRoundAndPackFloat64 requires that the
> high bit be clear. Perform one shift-right-and-jam if needed.
>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-07 21:52 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
2012-12-08 10:42 ` Peter Maydell
@ 2012-12-08 14:48 ` Andreas Färber
2012-12-08 16:08 ` Peter Maydell
1 sibling, 1 reply; 12+ messages in thread
From: Andreas Färber @ 2012-12-08 14:48 UTC (permalink / raw)
To: Richard Henderson; +Cc: Peter Maydell, qemu-devel
Am 07.12.2012 22:52, schrieb Richard Henderson:
> The interface to normalizeRoundAndPackFloat64 requires that the
> high bit be clear. Perform one shift-right-and-jam if needed.
>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
> fpu/softfloat.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/fpu/softfloat.c b/fpu/softfloat.c
> index 8413146..62830d7 100644
> --- a/fpu/softfloat.c
> +++ b/fpu/softfloat.c
> @@ -1273,9 +1273,14 @@ float64 int64_to_float64( int64 a STATUS_PARAM )
>
> float64 uint64_to_float64( uint64 a STATUS_PARAM )
> {
> - if ( a == 0 ) return float64_zero;
> - return normalizeRoundAndPackFloat64( 0, 0x43C, a STATUS_VAR );
> + int exp = 0x43C;
Extra space before number.
>
> + if ( a == 0 ) return float64_zero;
> + if ( (int64_t)a < 0 ) {
> + shift64RightJamming(a, 1, &a);
> + exp += 1;
> + }
> + return normalizeRoundAndPackFloat64( 0, exp, a STATUS_VAR );
> }
>
> /*----------------------------------------------------------------------------
Shouldn't we be updating the Coding Style on all lines we touch? The
shift line matches it but the normalize and ifs don't.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-08 14:48 ` Andreas Färber
@ 2012-12-08 16:08 ` Peter Maydell
2012-12-08 17:05 ` Andreas Färber
0 siblings, 1 reply; 12+ messages in thread
From: Peter Maydell @ 2012-12-08 16:08 UTC (permalink / raw)
To: Andreas Färber; +Cc: qemu-devel, Richard Henderson
On 8 December 2012 14:48, Andreas Färber <afaerber@suse.de> wrote:
> Shouldn't we be updating the Coding Style on all lines we touch? The
> shift line matches it but the normalize and ifs don't.
fpu/ is a special case because the softfloat library has such
a bonkers coding style. I tend to update to qemu standard when
I touch bits of it, but following the existing practice is
also OK in my opinion.
-- PMM
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64
2012-12-08 16:08 ` Peter Maydell
@ 2012-12-08 17:05 ` Andreas Färber
0 siblings, 0 replies; 12+ messages in thread
From: Andreas Färber @ 2012-12-08 17:05 UTC (permalink / raw)
To: Peter Maydell; +Cc: qemu-devel, Richard Henderson
Am 08.12.2012 17:08, schrieb Peter Maydell:
> On 8 December 2012 14:48, Andreas Färber <afaerber@suse.de> wrote:
>> Shouldn't we be updating the Coding Style on all lines we touch? The
>> shift line matches it but the normalize and ifs don't.
>
> fpu/ is a special case because the softfloat library has such
> a bonkers coding style. I tend to update to qemu standard when
> I touch bits of it, but following the existing practice is
> also OK in my opinion.
The same applies to linux-user and much of ppc code (spaces before
parenthesis, no braces). The only agreed-on way to address this is by
fixing the parts we touch - no veto here, but seems trivial enough to
fix. Otherwise the situation won't ever improve.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2013-01-05 12:15 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-31 18:09 [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
2012-12-31 18:09 ` [Qemu-devel] [PATCH 2/2] softfloat: Implement uint64_to_float128 Richard Henderson
2013-01-04 19:06 ` [Qemu-devel] [PATCH v4 0/2] soft-float-fixes for target-s390x Richard Henderson
2013-01-05 12:15 ` Blue Swirl
-- strict thread matches above, loose matches on Subject: below --
2012-12-11 17:21 [Qemu-devel] [PATCH v3 " Richard Henderson
2012-12-11 17:21 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
2012-12-11 17:34 ` Peter Maydell
2012-12-07 21:52 [Qemu-devel] [PATCH v2 0/2] soft-float fixes for target-s390x Richard Henderson
2012-12-07 21:52 ` [Qemu-devel] [PATCH 1/2] softfloat: Fix uint64_to_float64 Richard Henderson
2012-12-08 10:42 ` Peter Maydell
2012-12-08 14:48 ` Andreas Färber
2012-12-08 16:08 ` Peter Maydell
2012-12-08 17:05 ` Andreas Färber
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).