target/mips: Demacro helpers for M<ADD|SUB>F.<D|S>
Remove function definitions via macros to achieve better code clarity. Signed-off-by: Aleksandar Markovic <aleksandar.qemu.devel@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-Id: <1602103041-32017-3-git-send-email-aleksandar.qemu.devel@gmail.com> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
8a6c9e0fdd
commit
be0cb99426
@ -1666,25 +1666,54 @@ uint64_t helper_float_nmsub_ps(CPUMIPSState *env, uint64_t fdt0,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define FLOAT_FMADDSUB(name, bits, muladd_arg) \
|
uint32_t helper_float_maddf_s(CPUMIPSState *env, uint32_t fs,
|
||||||
uint ## bits ## _t helper_float_ ## name(CPUMIPSState *env, \
|
uint32_t ft, uint32_t fd)
|
||||||
uint ## bits ## _t fs, \
|
{
|
||||||
uint ## bits ## _t ft, \
|
uint32_t fdret;
|
||||||
uint ## bits ## _t fd) \
|
|
||||||
{ \
|
fdret = float32_muladd(fs, ft, fd, 0,
|
||||||
uint ## bits ## _t fdret; \
|
&env->active_fpu.fp_status);
|
||||||
\
|
|
||||||
fdret = float ## bits ## _muladd(fs, ft, fd, muladd_arg, \
|
update_fcr31(env, GETPC());
|
||||||
&env->active_fpu.fp_status); \
|
return fdret;
|
||||||
update_fcr31(env, GETPC()); \
|
}
|
||||||
return fdret; \
|
|
||||||
|
uint64_t helper_float_maddf_d(CPUMIPSState *env, uint64_t fs,
|
||||||
|
uint64_t ft, uint64_t fd)
|
||||||
|
{
|
||||||
|
uint64_t fdret;
|
||||||
|
|
||||||
|
fdret = float64_muladd(fs, ft, fd, 0,
|
||||||
|
&env->active_fpu.fp_status);
|
||||||
|
|
||||||
|
update_fcr31(env, GETPC());
|
||||||
|
return fdret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t helper_float_msubf_s(CPUMIPSState *env, uint32_t fs,
|
||||||
|
uint32_t ft, uint32_t fd)
|
||||||
|
{
|
||||||
|
uint32_t fdret;
|
||||||
|
|
||||||
|
fdret = float32_muladd(fs, ft, fd, float_muladd_negate_product,
|
||||||
|
&env->active_fpu.fp_status);
|
||||||
|
|
||||||
|
update_fcr31(env, GETPC());
|
||||||
|
return fdret;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint64_t helper_float_msubf_d(CPUMIPSState *env, uint64_t fs,
|
||||||
|
uint64_t ft, uint64_t fd)
|
||||||
|
{
|
||||||
|
uint64_t fdret;
|
||||||
|
|
||||||
|
fdret = float64_muladd(fs, ft, fd, float_muladd_negate_product,
|
||||||
|
&env->active_fpu.fp_status);
|
||||||
|
|
||||||
|
update_fcr31(env, GETPC());
|
||||||
|
return fdret;
|
||||||
}
|
}
|
||||||
|
|
||||||
FLOAT_FMADDSUB(maddf_s, 32, 0)
|
|
||||||
FLOAT_FMADDSUB(maddf_d, 64, 0)
|
|
||||||
FLOAT_FMADDSUB(msubf_s, 32, float_muladd_negate_product)
|
|
||||||
FLOAT_FMADDSUB(msubf_d, 64, float_muladd_negate_product)
|
|
||||||
#undef FLOAT_FMADDSUB
|
|
||||||
|
|
||||||
/* compare operations */
|
/* compare operations */
|
||||||
#define FOP_COND_D(op, cond) \
|
#define FOP_COND_D(op, cond) \
|
||||||
|
Loading…
Reference in New Issue
Block a user