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:
parent
886fb67020
commit
3ec21437b1
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user