All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s
@ 2015-12-06 16:11 Aurelien Jarno
  2015-12-17  9:11 ` Leon Alrae
  2016-01-24  3:42 ` Maciej W. Rozycki
  0 siblings, 2 replies; 4+ messages in thread
From: Aurelien Jarno @ 2015-12-06 16:11 UTC (permalink / raw)
  To: qemu-devel; +Cc: Leon Alrae, Aurelien Jarno

cvt.s.d and cvt.d.s are FP operations and thus need to convert input
sNaN into corresponding qNaN. Explicitely use the floatXX_maybe_silence_nan
functions for that as the floatXX_to_floatXX functions do not do that.

Cc: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 target-mips/op_helper.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index d2c98c9..20e79be 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -2545,6 +2545,7 @@ uint64_t helper_float_cvtd_s(CPUMIPSState *env, uint32_t fst0)
     uint64_t fdt2;
 
     fdt2 = float32_to_float64(fst0, &env->active_fpu.fp_status);
+    fdt2 = float64_maybe_silence_nan(fdt2);
     update_fcr31(env, GETPC());
     return fdt2;
 }
@@ -2634,6 +2635,7 @@ uint32_t helper_float_cvts_d(CPUMIPSState *env, uint64_t fdt0)
     uint32_t fst2;
 
     fst2 = float64_to_float32(fdt0, &env->active_fpu.fp_status);
+    fst2 = float32_maybe_silence_nan(fst2);
     update_fcr31(env, GETPC());
     return fst2;
 }
-- 
2.6.2

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

* Re: [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s
  2015-12-06 16:11 [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s Aurelien Jarno
@ 2015-12-17  9:11 ` Leon Alrae
  2016-01-24  3:42 ` Maciej W. Rozycki
  1 sibling, 0 replies; 4+ messages in thread
From: Leon Alrae @ 2015-12-17  9:11 UTC (permalink / raw)
  To: Aurelien Jarno, qemu-devel

On 06/12/15 16:11, Aurelien Jarno wrote:
> cvt.s.d and cvt.d.s are FP operations and thus need to convert input
> sNaN into corresponding qNaN. Explicitely use the floatXX_maybe_silence_nan
> functions for that as the floatXX_to_floatXX functions do not do that.
> 
> Cc: Leon Alrae <leon.alrae@imgtec.com>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
>  target-mips/op_helper.c | 2 ++
>  1 file changed, 2 insertions(+)

Thanks, applied to target-mips queue.

Regards,
Leon

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

* Re: [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s
  2015-12-06 16:11 [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s Aurelien Jarno
  2015-12-17  9:11 ` Leon Alrae
@ 2016-01-24  3:42 ` Maciej W. Rozycki
  2016-01-24 13:15   ` Peter Maydell
  1 sibling, 1 reply; 4+ messages in thread
From: Maciej W. Rozycki @ 2016-01-24  3:42 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: Leon Alrae, qemu-devel

On Sun, 6 Dec 2015, Aurelien Jarno wrote:

> cvt.s.d and cvt.d.s are FP operations and thus need to convert input
> sNaN into corresponding qNaN. Explicitely use the floatXX_maybe_silence_nan
> functions for that as the floatXX_to_floatXX functions do not do that.
> 
> Cc: Leon Alrae <leon.alrae@imgtec.com>
> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
> ---
>  target-mips/op_helper.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
> index d2c98c9..20e79be 100644
> --- a/target-mips/op_helper.c
> +++ b/target-mips/op_helper.c
> @@ -2545,6 +2545,7 @@ uint64_t helper_float_cvtd_s(CPUMIPSState *env, uint32_t fst0)
>      uint64_t fdt2;
>  
>      fdt2 = float32_to_float64(fst0, &env->active_fpu.fp_status);
> +    fdt2 = float64_maybe_silence_nan(fdt2);
>      update_fcr31(env, GETPC());
>      return fdt2;
>  }
> @@ -2634,6 +2635,7 @@ uint32_t helper_float_cvts_d(CPUMIPSState *env, uint64_t fdt0)
>      uint32_t fst2;
>  
>      fst2 = float64_to_float32(fdt0, &env->active_fpu.fp_status);
> +    fst2 = float32_maybe_silence_nan(fst2);
>      update_fcr31(env, GETPC());
>      return fst2;
>  }

 FYI, I posted a more general fix to this a while ago, however the review 
regrettably went nowhere.  See the archive of discussion starting at: 
<http://lists.nongnu.org/archive/html/qemu-devel/2014-12/msg00969.html> 
for details, including the justification and further design consideration.

  Maciej

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

* Re: [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s
  2016-01-24  3:42 ` Maciej W. Rozycki
@ 2016-01-24 13:15   ` Peter Maydell
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2016-01-24 13:15 UTC (permalink / raw)
  To: Maciej W. Rozycki; +Cc: Leon Alrae, QEMU Developers, Aurelien Jarno

On 24 January 2016 at 03:42, Maciej W. Rozycki <macro@linux-mips.org> wrote:
>
>  FYI, I posted a more general fix to this a while ago, however the review
> regrettably went nowhere.  See the archive of discussion starting at:
> <http://lists.nongnu.org/archive/html/qemu-devel/2014-12/msg00969.html>
> for details, including the justification and further design consideration.

The relevant review is in this bit of the thread
http://lists.nongnu.org/archive/html/qemu-devel/2015-02/msg00897.html
(which you can't trivially get to from the original top level post
since the mailing list archive regrettably splits archives by month
and doesn't track threads between months).

ARM does the same thing that this patch does for MIPS (silence
NaNs in the calling function after the conversion happens), but as
I mention in that email this is broken and really should be dealt
with via target-specific hooks in the conversion routines.

thanks
-- PMM

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

end of thread, other threads:[~2016-01-24 13:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-06 16:11 [Qemu-devel] [PATCH] target-mips: silence NaNs for cvt.s.d and cvt.d.s Aurelien Jarno
2015-12-17  9:11 ` Leon Alrae
2016-01-24  3:42 ` Maciej W. Rozycki
2016-01-24 13:15   ` Peter Maydell

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.