target/mips: fpu: Demacro CLASS.<D|S>
This is just a cosmetic change to enable tools like gcov, gdb, callgrind, etc. to better display involved source code. Reviewed-by: Aleksandar Rikalo <aleksandar.rikalo@syrmia.com> Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> Message-Id: <20200518200920.17344-12-aleksandar.qemu.devel@gmail.com>
This commit is contained in:
parent
32574f1d1c
commit
0bd99ac77c
@ -1165,10 +1165,76 @@ uint ## bits ## _t helper_float_ ## name(CPUMIPSState *env, \
|
||||
return float_ ## name(arg, &env->active_fpu.fp_status); \
|
||||
}
|
||||
|
||||
FLOAT_CLASS(class_s, 32)
|
||||
FLOAT_CLASS(class_d, 64)
|
||||
#undef FLOAT_CLASS
|
||||
|
||||
uint64_t float_class_d(uint64_t arg, float_status *status)
|
||||
{
|
||||
if (float64_is_signaling_nan(arg, status)) {
|
||||
return FLOAT_CLASS_SIGNALING_NAN;
|
||||
} else if (float64_is_quiet_nan(arg, status)) {
|
||||
return FLOAT_CLASS_QUIET_NAN;
|
||||
} else if (float64_is_neg(arg)) {
|
||||
if (float64_is_infinity(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_INFINITY;
|
||||
} else if (float64_is_zero(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_ZERO;
|
||||
} else if (float64_is_zero_or_denormal(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_SUBNORMAL;
|
||||
} else {
|
||||
return FLOAT_CLASS_NEGATIVE_NORMAL;
|
||||
}
|
||||
} else {
|
||||
if (float64_is_infinity(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_INFINITY;
|
||||
} else if (float64_is_zero(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_ZERO;
|
||||
} else if (float64_is_zero_or_denormal(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_SUBNORMAL;
|
||||
} else {
|
||||
return FLOAT_CLASS_POSITIVE_NORMAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint64_t helper_float_class_d(CPUMIPSState *env, uint64_t arg)
|
||||
{
|
||||
return float_class_d(arg, &env->active_fpu.fp_status);
|
||||
}
|
||||
|
||||
uint32_t float_class_s(uint32_t arg, float_status *status)
|
||||
{
|
||||
if (float32_is_signaling_nan(arg, status)) {
|
||||
return FLOAT_CLASS_SIGNALING_NAN;
|
||||
} else if (float32_is_quiet_nan(arg, status)) {
|
||||
return FLOAT_CLASS_QUIET_NAN;
|
||||
} else if (float32_is_neg(arg)) {
|
||||
if (float32_is_infinity(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_INFINITY;
|
||||
} else if (float32_is_zero(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_ZERO;
|
||||
} else if (float32_is_zero_or_denormal(arg)) {
|
||||
return FLOAT_CLASS_NEGATIVE_SUBNORMAL;
|
||||
} else {
|
||||
return FLOAT_CLASS_NEGATIVE_NORMAL;
|
||||
}
|
||||
} else {
|
||||
if (float32_is_infinity(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_INFINITY;
|
||||
} else if (float32_is_zero(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_ZERO;
|
||||
} else if (float32_is_zero_or_denormal(arg)) {
|
||||
return FLOAT_CLASS_POSITIVE_SUBNORMAL;
|
||||
} else {
|
||||
return FLOAT_CLASS_POSITIVE_NORMAL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t helper_float_class_s(CPUMIPSState *env, uint32_t arg)
|
||||
{
|
||||
return float_class_s(arg, &env->active_fpu.fp_status);
|
||||
}
|
||||
|
||||
/* binary operations */
|
||||
|
||||
uint64_t helper_float_add_d(CPUMIPSState *env,
|
||||
|
Loading…
Reference in New Issue
Block a user