https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121525

--- Comment #4 from Joseph S. Myers <jsm28 at gcc dot gnu.org> ---
If you pass _Float16 in a double precision register, note potential signaling
NaN issues - preferably a signaling NaN of type _Float16 should be passed as a
signaling NaN so that callees that distinguish quiet and signaling NaNs can do
so (powf16 etc.). (And likewise for return values, of course.)

This isn't a problem for single precision on Power because of load/store
instructions whose conversions between single and double precision are defined
as purely bitwise operations (and, in particular, do not convert signaling NaNs
to quiet). I don't know whether the half precision conversion instructions
include ones with the same property that's convenient for implementing such an
ABI, however.

Reply via email to