target/m68k: pass quotient directly into make_quotient()

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230114232959.118224-2-mark.cave-ayland@ilande.co.uk>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Mark Cave-Ayland 2023-01-14 23:29:56 +00:00 committed by Laurent Vivier
parent 886fb67020
commit 3ec21437b1

View File

@ -515,16 +515,10 @@ uint32_t HELPER(fmovemd_ld_postinc)(CPUM68KState *env, uint32_t addr,
return fmovem_postinc(env, addr, mask, cpu_ld_float64_ra); return fmovem_postinc(env, addr, mask, cpu_ld_float64_ra);
} }
static void make_quotient(CPUM68KState *env, floatx80 val) static void make_quotient(CPUM68KState *env, int32_t quotient)
{ {
int32_t quotient;
int sign; int sign;
if (floatx80_is_any_nan(val)) {
return;
}
quotient = floatx80_to_int32(val, &env->fp_status);
sign = quotient < 0; sign = quotient < 0;
if (sign) { if (sign) {
quotient = -quotient; quotient = -quotient;
@ -538,14 +532,22 @@ void HELPER(fmod)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1)
{ {
res->d = floatx80_mod(val1->d, val0->d, &env->fp_status); res->d = floatx80_mod(val1->d, val0->d, &env->fp_status);
make_quotient(env, res->d); if (floatx80_is_any_nan(res->d)) {
return;
}
make_quotient(env, floatx80_to_int32(res->d, &env->fp_status));
} }
void HELPER(frem)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1) void HELPER(frem)(CPUM68KState *env, FPReg *res, FPReg *val0, FPReg *val1)
{ {
res->d = floatx80_rem(val1->d, val0->d, &env->fp_status); res->d = floatx80_rem(val1->d, val0->d, &env->fp_status);
make_quotient(env, res->d); if (floatx80_is_any_nan(res->d)) {
return;
}
make_quotient(env, floatx80_to_int32(res->d, &env->fp_status));
} }
void HELPER(fgetexp)(CPUM68KState *env, FPReg *res, FPReg *val) void HELPER(fgetexp)(CPUM68KState *env, FPReg *res, FPReg *val)