float128_to_uint32() is needed by target/s390. Signed-off-by: Bharata B Rao <bhar...@linux.vnet.ibm.com> CC: Christian Borntraeger <borntrae...@de.ibm.com> CC: Cornelia Huck <cornelia.h...@de.ibm.com> --- fpu/softfloat.c | 17 +++++++++++++++++ include/fpu/softfloat.h | 1 + 2 files changed, 18 insertions(+)
diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 485a006..ef6f2d0 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -6186,6 +6186,23 @@ uint64_t float128_to_uint64_round_to_zero(float128 a, float_status *status) return v; } +uint32_t float128_to_uint32(float128 a, float_status *status) +{ + uint64_t v; + uint32_t res; + int old_exc_flags = get_float_exception_flags(status); + + v = float128_to_uint64(a, status); + if (v > 0xffffffff) { + res = 0xffffffff; + } else { + return v; + } + set_float_exception_flags(old_exc_flags, status); + float_raise(float_flag_invalid, status); + return res; +} + /*---------------------------------------------------------------------------- | Returns the result of converting the quadruple-precision floating-point | value `a' to the 32-bit unsigned integer format. The conversion diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index f1288ef..a57a027 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -716,6 +716,7 @@ int64_t float128_to_int64(float128, float_status *status); int64_t float128_to_int64_round_to_zero(float128, float_status *status); uint64_t float128_to_uint64(float128, float_status *status); uint64_t float128_to_uint64_round_to_zero(float128, float_status *status); +uint32_t float128_to_uint32(float128, float_status *status); uint32_t float128_to_uint32_round_to_zero(float128, float_status *status); float32 float128_to_float32(float128, float_status *status); float64 float128_to_float64(float128, float_status *status); -- 2.7.4