util: Keep quiet NaNs quiet when converting to half float.
authorChia-I Wu <olvaffe@gmail.com>
Thu, 28 Apr 2022 21:25:36 +0000 (14:25 -0700)
committerMarge Bot <emma+marge@anholt.net>
Mon, 2 May 2022 23:36:50 +0000 (23:36 +0000)
commit27e33d5c963f13a47c4b9276378db913d8ecb189
treefd8931ea2b59adfb35d2e78798abbfb96cf9d4bf
parentacf6bf88c07e0a1f0283ad1acd0e5f0d2a156535
util: Keep quiet NaNs quiet when converting to half float.

We don't want to be throwing exceptions and changing float values later by
emitting a signaling binary16 nan.

If we don't do this, then when we convert back to f32 in NIR constant
expression evaluation, the signaling NaN can end up giving NaN for
fmax(NaN, 0.0), instead of 0.0.

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5933
Cc: mesa-stable
Reviewed-by: Emma Anholt <emma@anholt.net>
Reviewed-by: Jason Ekstrand <jason.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16233>
src/util/half_float.c
src/util/softfloat.c