summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBharata B Rao2017-01-06 07:14:45 +0100
committerDavid Gibson2017-01-31 00:10:13 +0100
commit1383602e0daed0f4f9faefce0a88a296d6e94ae7 (patch)
treeaadbe7b2dc31d6f577486fd08a84d2f4aecc30c1
parentprep: add IBM RS/6000 7020 (40p) machine emulation (diff)
downloadqemu-1383602e0daed0f4f9faefce0a88a296d6e94ae7.tar.gz
qemu-1383602e0daed0f4f9faefce0a88a296d6e94ae7.tar.xz
qemu-1383602e0daed0f4f9faefce0a88a296d6e94ae7.zip
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>
-rw-r--r--target/ppc/fpu_helper.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/target/ppc/fpu_helper.c b/target/ppc/fpu_helper.c
index 1ccd5e6c1c..4da991abfa 100644
--- a/target/ppc/fpu_helper.c
+++ b/target/ppc/fpu_helper.c
@@ -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 {