target-ppc: Use float64 arg in helper_compute_fprf()

Use float64 argument instead of unit64_t in helper_compute_fprf()
This allows code in helper_compute_fprf() to be reused later to
work with float128 argument too.

Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Bharata B Rao 2017-01-06 11:44:45 +05:30 committed by David Gibson
parent 34b9b5575b
commit 1383602e0d
1 changed files with 7 additions and 9 deletions

View File

@ -66,23 +66,21 @@ static inline int ppc_float64_get_unbiased_exp(float64 f)
return ((f >> 52) & 0x7FF) - 1023;
}
void helper_compute_fprf(CPUPPCState *env, uint64_t arg)
void helper_compute_fprf(CPUPPCState *env, float64 arg)
{
CPU_DoubleU farg;
int isneg;
int fprf;
farg.ll = arg;
isneg = float64_is_neg(farg.d);
if (unlikely(float64_is_any_nan(farg.d))) {
if (float64_is_signaling_nan(farg.d, &env->fp_status)) {
isneg = float64_is_neg(arg);
if (unlikely(float64_is_any_nan(arg))) {
if (float64_is_signaling_nan(arg, &env->fp_status)) {
/* Signaling NaN: flags are undefined */
fprf = 0x00;
} else {
/* Quiet NaN */
fprf = 0x11;
}
} else if (unlikely(float64_is_infinity(farg.d))) {
} else if (unlikely(float64_is_infinity(arg))) {
/* +/- infinity */
if (isneg) {
fprf = 0x09;
@ -90,7 +88,7 @@ void helper_compute_fprf(CPUPPCState *env, uint64_t arg)
fprf = 0x05;
}
} else {
if (float64_is_zero(farg.d)) {
if (float64_is_zero(arg)) {
/* +/- zero */
if (isneg) {
fprf = 0x12;
@ -98,7 +96,7 @@ void helper_compute_fprf(CPUPPCState *env, uint64_t arg)
fprf = 0x02;
}
} else {
if (isden(farg.d)) {
if (isden(arg)) {
/* Denormalized numbers */
fprf = 0x10;
} else {