s390x/tcg: Fix rounding from float128 to uint64_t/uint32_t
Let's use the proper conversion functions now that we have them. Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: David Hildenbrand <david@redhat.com> Message-Id: <20190218122710.23639-3-david@redhat.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
fc7cc951b6
commit
3af471f915
@ -509,9 +509,7 @@ uint64_t HELPER(clgdb)(CPUS390XState *env, uint64_t v2, uint32_t m3)
|
||||
uint64_t HELPER(clgxb)(CPUS390XState *env, uint64_t h, uint64_t l, uint32_t m3)
|
||||
{
|
||||
int hold = swap_round_mode(env, m3);
|
||||
float128 v2 = make_float128(h, l);
|
||||
/* ??? Not 100% correct. */
|
||||
uint64_t ret = float128_to_int64(v2, &env->fpu_status);
|
||||
uint64_t ret = float128_to_uint64(make_float128(h, l), &env->fpu_status);
|
||||
set_float_rounding_mode(hold, &env->fpu_status);
|
||||
handle_exceptions(env, GETPC());
|
||||
return ret;
|
||||
@ -541,9 +539,7 @@ uint64_t HELPER(clfdb)(CPUS390XState *env, uint64_t v2, uint32_t m3)
|
||||
uint64_t HELPER(clfxb)(CPUS390XState *env, uint64_t h, uint64_t l, uint32_t m3)
|
||||
{
|
||||
int hold = swap_round_mode(env, m3);
|
||||
float128 v2 = make_float128(h, l);
|
||||
/* Not 100% correct. */
|
||||
uint32_t ret = float128_to_int64(v2, &env->fpu_status);
|
||||
uint32_t ret = float128_to_uint32(make_float128(h, l), &env->fpu_status);
|
||||
set_float_rounding_mode(hold, &env->fpu_status);
|
||||
handle_exceptions(env, GETPC());
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user