qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 10/11] softfloat: Sink frac_cmp in parts_pick_nan until neede


From: Richard Henderson
Subject: Re: [PATCH 10/11] softfloat: Sink frac_cmp in parts_pick_nan until needed
Date: Thu, 5 Dec 2024 11:52:59 -0600
User-agent: Mozilla Thunderbird

On 12/5/24 11:51, Richard Henderson wrote:
On 12/5/24 07:48, Peter Maydell wrote:
On Tue, 3 Dec 2024 at 20:40, Richard Henderson
<richard.henderson@linaro.org> wrote:

Move the fractional comparison to the end of the
float_2nan_prop_x87 case.  This is not required for
any other 2nan propagation rule.  Reorganize the
x87 case itself to break out of the switch when the
fractional comparison is not required.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

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

@@ -89,20 +84,24 @@ static FloatPartsN *partsN(pick_nan)(FloatPartsN *a, 
FloatPartsN *b,
           * return the NaN with the positive sign bit (if any).
           */
          if (is_snan(a->cls)) {
-            if (is_snan(b->cls)) {
-                which = cmp > 0 ? 0 : 1;
-            } else {
+            if (!is_snan(b->cls)) {
                  which = is_qnan(b->cls) ? 1 : 0;
+                break;
              }
          } else if (is_qnan(a->cls)) {
              if (is_snan(b->cls) || !is_qnan(b->cls)) {

Pre-existing code, but isn't
    is_snan(X) || !is_qnan(X)
the same as
    !is_qnan(X)
?

No, since X may not be a NaN at all.  We arrive in pick_nan knowing only that one operand must be a NaN, but the other may be anything at all.

Alternately, and more, correctly, you're right.  :-}


r~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]