On 02/07/2014 01:49 PM, Peter Maydell wrote:
>          /* Zero plus something non-zero : just return the something */
> +        if (flags & float_muladd_halve_result) {
> +            if (cExp == 0) {
> +                shift32RightJamming(cSig, 1, &cSig);
> +            } else if (cExp == 1) {
> +                shift32RightJamming(cSig, 1, &cSig);
> +                cSig |= (1 << 22);
> +                cExp = 0;
> +            } else {
> +                cExp--;
> +            }

Surely better to just use roundAndPackFloat for this case.  Looks to me that
you're missing inexact and underflow exceptions at least.

> +        }
>          return packFloat32(cSign ^ signflip, cExp, cSig);
>      }


r~


Reply via email to