Re: [PATCH 12/72] softfloat: fix return_nan vs default_nan_mode

2021-05-11 Thread David Hildenbrand

On 08.05.21 03:47, Richard Henderson wrote:

Do not call parts_silence_nan when default_nan_mode is in
effect.  This will avoid an assert in a later patch.

Signed-off-by: Richard Henderson 
---
  fpu/softfloat.c | 19 +++
  1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index b694e38522..6589f00b23 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -892,21 +892,16 @@ static float64 float64_round_pack_canonical(FloatParts p, 
float_status *s)
  
  static FloatParts return_nan(FloatParts a, float_status *s)

  {
-switch (a.cls) {
-case float_class_snan:
+g_assert(is_nan(a.cls));
+if (is_snan(a.cls)) {
  float_raise(float_flag_invalid, s);
-a = parts_silence_nan(a, s);
-/* fall through */
-case float_class_qnan:
-if (s->default_nan_mode) {
-return parts_default_nan(s);
+if (!s->default_nan_mode) {
+return parts_silence_nan(a, s);
  }
-break;
-
-default:
-g_assert_not_reached();
+} else if (!s->default_nan_mode) {
+return a;
  }
-return a;
+return parts_default_nan(s);
  }
  
  static FloatParts pick_nan(FloatParts a, FloatParts b, float_status *s)




Reviewed-by: David Hildenbrand 

--
Thanks,

David / dhildenb




Re: [PATCH 12/72] softfloat: fix return_nan vs default_nan_mode

2021-05-10 Thread Alex Bennée


Richard Henderson  writes:

> Do not call parts_silence_nan when default_nan_mode is in
> effect.  This will avoid an assert in a later patch.
>
> Signed-off-by: Richard Henderson 

Reviewed-by: Alex Bennée 

-- 
Alex Bennée



[PATCH 12/72] softfloat: fix return_nan vs default_nan_mode

2021-05-07 Thread Richard Henderson
Do not call parts_silence_nan when default_nan_mode is in
effect.  This will avoid an assert in a later patch.

Signed-off-by: Richard Henderson 
---
 fpu/softfloat.c | 19 +++
 1 file changed, 7 insertions(+), 12 deletions(-)

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index b694e38522..6589f00b23 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -892,21 +892,16 @@ static float64 float64_round_pack_canonical(FloatParts p, 
float_status *s)
 
 static FloatParts return_nan(FloatParts a, float_status *s)
 {
-switch (a.cls) {
-case float_class_snan:
+g_assert(is_nan(a.cls));
+if (is_snan(a.cls)) {
 float_raise(float_flag_invalid, s);
-a = parts_silence_nan(a, s);
-/* fall through */
-case float_class_qnan:
-if (s->default_nan_mode) {
-return parts_default_nan(s);
+if (!s->default_nan_mode) {
+return parts_silence_nan(a, s);
 }
-break;
-
-default:
-g_assert_not_reached();
+} else if (!s->default_nan_mode) {
+return a;
 }
-return a;
+return parts_default_nan(s);
 }
 
 static FloatParts pick_nan(FloatParts a, FloatParts b, float_status *s)
-- 
2.25.1