All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] target-ppc: use float32_is_any_nan()
@ 2011-01-02 12:06 Aurelien Jarno
  2011-01-05 16:59 ` [Qemu-devel] " Alexander Graf
  2011-01-05 17:04 ` [Qemu-devel] " Nathan Froyd
  0 siblings, 2 replies; 5+ messages in thread
From: Aurelien Jarno @ 2011-01-02 12:06 UTC (permalink / raw)
  To: qemu-devel; +Cc: Alexander Graf, Aurelien Jarno

Use the new function float32_is_any_nan() instead of
float32_is_quiet_nan() || float32_is_signaling_nan().

Cc: Alexander Graf <agraf@suse.de>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 target-ppc/op_helper.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/target-ppc/op_helper.c b/target-ppc/op_helper.c
index 5ded1c1..89be0f4 100644
--- a/target-ppc/op_helper.c
+++ b/target-ppc/op_helper.c
@@ -1938,7 +1938,7 @@ target_ulong helper_dlmzb (target_ulong high, target_ulong low, uint32_t update_
 /* If X is a NaN, store the corresponding QNaN into RESULT.  Otherwise,
  * execute the following block.  */
 #define DO_HANDLE_NAN(result, x)                \
-    if (float32_is_quiet_nan(x) || float32_is_signaling_nan(x)) {     \
+    if (float32_is_any_nan(x)) {                                \
         CPU_FloatU __f;                                         \
         __f.f = x;                                              \
         __f.l = __f.l | (1 << 22);  /* Set QNaN bit. */         \
@@ -2283,8 +2283,7 @@ void helper_vcmpbfp_dot (ppc_avr_t *r, ppc_avr_t *a, ppc_avr_t *b)
         float_status s = env->vec_status;                               \
         set_float_rounding_mode(float_round_to_zero, &s);               \
         for (i = 0; i < ARRAY_SIZE(r->f); i++) {                        \
-            if (float32_is_quiet_nan(b->f[i]) ||                              \
-                float32_is_signaling_nan(b->f[i])) {                    \
+            if (float32_is_any_nan(b->f[i])) {                          \
                 r->element[i] = 0;                                      \
             } else {                                                    \
                 float64 t = float32_to_float64(b->f[i], &s);            \
-- 
1.7.2.3

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Qemu-devel] Re: [PATCH] target-ppc: use float32_is_any_nan()
  2011-01-02 12:06 [Qemu-devel] [PATCH] target-ppc: use float32_is_any_nan() Aurelien Jarno
@ 2011-01-05 16:59 ` Alexander Graf
  2011-01-05 17:14   ` Peter Maydell
  2011-01-05 17:04 ` [Qemu-devel] " Nathan Froyd
  1 sibling, 1 reply; 5+ messages in thread
From: Alexander Graf @ 2011-01-05 16:59 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel


On 02.01.2011, at 13:06, Aurelien Jarno wrote:

> Use the new function float32_is_any_nan() instead of
> float32_is_quiet_nan() || float32_is_signaling_nan().
> 
> Cc: Alexander Graf <agraf@suse.de>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

I frankly have very little knowledge of FP stuff. Is any_nan really equal to quiet_nan || signaling_nan or would it cover more cases?


Alex

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] target-ppc: use float32_is_any_nan()
  2011-01-02 12:06 [Qemu-devel] [PATCH] target-ppc: use float32_is_any_nan() Aurelien Jarno
  2011-01-05 16:59 ` [Qemu-devel] " Alexander Graf
@ 2011-01-05 17:04 ` Nathan Froyd
  1 sibling, 0 replies; 5+ messages in thread
From: Nathan Froyd @ 2011-01-05 17:04 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel, Alexander Graf

On Sun, Jan 02, 2011 at 01:06:49PM +0100, Aurelien Jarno wrote:
> Use the new function float32_is_any_nan() instead of
> float32_is_quiet_nan() || float32_is_signaling_nan().
> 
> Cc: Alexander Graf <agraf@suse.de>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

Reviewed-by: Nathan Froyd <froydnj@codesourcery.com>

> @@ -1938,7 +1938,7 @@ target_ulong helper_dlmzb (target_ulong high, target_ulong low, uint32_t update_
>  /* If X is a NaN, store the corresponding QNaN into RESULT.  Otherwise,
>   * execute the following block.  */
>  #define DO_HANDLE_NAN(result, x)                \
> -    if (float32_is_quiet_nan(x) || float32_is_signaling_nan(x)) {     \
> +    if (float32_is_any_nan(x)) {                                \
>          CPU_FloatU __f;                                         \
>          __f.f = x;                                              \
>          __f.l = __f.l | (1 << 22);  /* Set QNaN bit. */         \

If you were looking for other cleanups, this could stand a
maybe_silence_nan.

-Nathan

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Re: [PATCH] target-ppc: use float32_is_any_nan()
  2011-01-05 16:59 ` [Qemu-devel] " Alexander Graf
@ 2011-01-05 17:14   ` Peter Maydell
  2011-01-05 17:19     ` Alexander Graf
  0 siblings, 1 reply; 5+ messages in thread
From: Peter Maydell @ 2011-01-05 17:14 UTC (permalink / raw)
  To: Alexander Graf; +Cc: qemu-devel, Aurelien Jarno

On 5 January 2011 16:59, Alexander Graf <agraf@suse.de> wrote:
>
> On 02.01.2011, at 13:06, Aurelien Jarno wrote:
>
>> Use the new function float32_is_any_nan() instead of
>> float32_is_quiet_nan() || float32_is_signaling_nan().
>>
>> Cc: Alexander Graf <agraf@suse.de>
>> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
>
> I frankly have very little knowledge of FP stuff. Is any_nan really equal to quiet_nan || signaling_nan or would it cover more cases?

It is exactly equivalent -- all NaNs are either signalling or quiet.

(If you want to check this you don't need to know anything about floating
point, all three functions are just acting on 32 bit values so you could
in theory identify all the bit patterns they return true or false on...)

-- PMM

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Re: [PATCH] target-ppc: use float32_is_any_nan()
  2011-01-05 17:14   ` Peter Maydell
@ 2011-01-05 17:19     ` Alexander Graf
  0 siblings, 0 replies; 5+ messages in thread
From: Alexander Graf @ 2011-01-05 17:19 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel, Aurelien Jarno


On 05.01.2011, at 18:14, Peter Maydell wrote:

> On 5 January 2011 16:59, Alexander Graf <agraf@suse.de> wrote:
>> 
>> On 02.01.2011, at 13:06, Aurelien Jarno wrote:
>> 
>>> Use the new function float32_is_any_nan() instead of
>>> float32_is_quiet_nan() || float32_is_signaling_nan().
>>> 
>>> Cc: Alexander Graf <agraf@suse.de>
>>> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
>> 
>> I frankly have very little knowledge of FP stuff. Is any_nan really equal to quiet_nan || signaling_nan or would it cover more cases?
> 
> It is exactly equivalent -- all NaNs are either signalling or quiet.
> 
> (If you want to check this you don't need to know anything about floating
> point, all three functions are just acting on 32 bit values so you could
> in theory identify all the bit patterns they return true or false on...)

Yeah, reading on through the FP parts of the spec I realized that too :). Thanks for the clarification.

Acked-by: Alexander Graf <agraf@suse.de>


Alex

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-01-05 17:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-01-02 12:06 [Qemu-devel] [PATCH] target-ppc: use float32_is_any_nan() Aurelien Jarno
2011-01-05 16:59 ` [Qemu-devel] " Alexander Graf
2011-01-05 17:14   ` Peter Maydell
2011-01-05 17:19     ` Alexander Graf
2011-01-05 17:04 ` [Qemu-devel] " Nathan Froyd

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.