From 24a62dd0fb0e0d0defebe607dcffce7c4b1ae4c5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 18 Sep 2020 05:48:05 -0400 Subject: [PATCH] util: move util_half_to_float code into _mesa_half_to_float_slow Acked-by: Pierre-Eric Pelloux-Prayer Reviewed-by: Matt Turner Part-of: --- src/gallium/auxiliary/util/u_half.h | 24 +----------------------- src/util/half_float.c | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/gallium/auxiliary/util/u_half.h b/src/gallium/auxiliary/util/u_half.h index bbcc843..04c5930 100644 --- a/src/gallium/auxiliary/util/u_half.h +++ b/src/gallium/auxiliary/util/u_half.h @@ -110,29 +110,7 @@ util_float_to_half_rtz(float f) static inline float util_half_to_float(uint16_t f16) { - union fi infnan; - union fi magic; - union fi f32; - - infnan.ui = 0x8f << 23; - infnan.f = 65536.0f; - magic.ui = 0xef << 23; - - /* Exponent / Mantissa */ - f32.ui = (f16 & 0x7fff) << 13; - - /* Adjust */ - f32.f *= magic.f; - /* XXX: The magic mul relies on denorms being available */ - - /* Inf / NaN */ - if (f32.f >= infnan.f) - f32.ui |= 0xff << 23; - - /* Sign */ - f32.ui |= (uint32_t)(f16 & 0x8000) << 16; - - return f32.f; + return _mesa_half_to_float(f16); } #ifdef __cplusplus diff --git a/src/util/half_float.c b/src/util/half_float.c index 61b512f..0d1e6a9 100644 --- a/src/util/half_float.c +++ b/src/util/half_float.c @@ -142,7 +142,29 @@ _mesa_float_to_float16_rtz_slow(float val) float _mesa_half_to_float_slow(uint16_t val) { - return util_half_to_float(val); + union fi infnan; + union fi magic; + union fi f32; + + infnan.ui = 0x8f << 23; + infnan.f = 65536.0f; + magic.ui = 0xef << 23; + + /* Exponent / Mantissa */ + f32.ui = (val & 0x7fff) << 13; + + /* Adjust */ + f32.f *= magic.f; + /* XXX: The magic mul relies on denorms being available */ + + /* Inf / NaN */ + if (f32.f >= infnan.f) + f32.ui |= 0xff << 23; + + /* Sign */ + f32.ui |= (uint32_t)(val & 0x8000) << 16; + + return f32.f; } /** -- 2.7.4