This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Remove alpha specific fmax, fmin to fix sNaN handling [BZ #20947]
- From: Richard Henderson <rth at twiddle dot net>
- To: Aurelien Jarno <aurelien at aurel32 dot net>, libc-alpha at sourceware dot org
- Date: Mon, 1 Jan 2018 13:56:15 -0800
- Subject: Re: [PATCH] Remove alpha specific fmax, fmin to fix sNaN handling [BZ #20947]
- Authentication-results: sourceware.org; auth=none
- References: <20171231163825.9768-1-aurelien@aurel32.net>
On 12/31/2017 08:38 AM, Aurelien Jarno wrote:
> Various fmax and fmin function implementations mishandle sNaN
> arguments:
>
> (a) When both arguments are NaNs, the return value should be a qNaN,
> but sometimes it is an sNaN if at least one argument is an sNaN.
>
> (b) Under TS 18661-1 semantics, if either argument is an sNaN then the
> result should be a qNaN (whereas if one argument is a qNaN and the
> other is not a NaN, the result should be the non-NaN argument).
> Various implementations treat sNaNs like qNaNs here.
>
> One way to fix that is to detect the sNaN and add a special case. That
> said there is no FPU instruction to do that, so it requires transfering
> the FP value to an integer register and testing bits. This becomes quite
> complicated so it's probably better to just use the generic versions of
> these functions which just do that through issignaling.
>
> Changelog:
> [BZ #20947]
> * sysdeps/alpha/fpu/s_fmax.S: Remove file.
> * sysdeps/alpha/fpu/s_fmaxf.S: Likewise.
> * sysdeps/alpha/fpu/s_fmin.S: Likewise.
> * sysdeps/alpha/fpu/s_fminf.S: Likewise.
> ---
LGTM.
r~