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.