mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2024-12-23 04:15:39 +00:00
target/arm: Macroify uses of do_vfp_2op_sp() and do_vfp_2op_dp()
Macroify the uses of do_vfp_2op_sp() and do_vfp_2op_dp(); this will make it easier to add the halfprec support. Backports 009a07335b8ff492d940e1eb229a1b0d302c2512
This commit is contained in:
parent
6ac2c597ab
commit
f3af6b8c25
|
@ -2262,55 +2262,35 @@ static bool trans_VMOV_imm_dp(DisasContext *s, arg_VMOV_imm_dp *a)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool trans_VMOV_reg_sp(DisasContext *s, arg_VMOV_reg_sp *a)
|
||||
{
|
||||
return do_vfp_2op_sp(s, tcg_gen_mov_i32, a->vd, a->vm);
|
||||
}
|
||||
#define DO_VFP_2OP(INSN, PREC, FN) \
|
||||
static bool trans_##INSN##_##PREC(DisasContext *s, \
|
||||
arg_##INSN##_##PREC *a) \
|
||||
{ \
|
||||
return do_vfp_2op_##PREC(s, FN, a->vd, a->vm); \
|
||||
}
|
||||
|
||||
static bool trans_VMOV_reg_dp(DisasContext *s, arg_VMOV_reg_dp *a)
|
||||
{
|
||||
return do_vfp_2op_dp(s, tcg_gen_mov_i64, a->vd, a->vm);
|
||||
}
|
||||
DO_VFP_2OP(VMOV_reg, sp, tcg_gen_mov_i32)
|
||||
DO_VFP_2OP(VMOV_reg, dp, tcg_gen_mov_i64)
|
||||
|
||||
static bool trans_VABS_sp(DisasContext *s, arg_VABS_sp *a)
|
||||
{
|
||||
return do_vfp_2op_sp(s, gen_helper_vfp_abss, a->vd, a->vm);
|
||||
}
|
||||
DO_VFP_2OP(VABS, sp, gen_helper_vfp_abss)
|
||||
DO_VFP_2OP(VABS, dp, gen_helper_vfp_absd)
|
||||
|
||||
static bool trans_VABS_dp(DisasContext *s, arg_VABS_dp *a)
|
||||
{
|
||||
return do_vfp_2op_dp(s, gen_helper_vfp_absd, a->vd, a->vm);
|
||||
}
|
||||
DO_VFP_2OP(VNEG, sp, gen_helper_vfp_negs)
|
||||
DO_VFP_2OP(VNEG, dp, gen_helper_vfp_negd)
|
||||
|
||||
static bool trans_VNEG_sp(DisasContext *s, arg_VNEG_sp *a)
|
||||
{
|
||||
return do_vfp_2op_sp(s, gen_helper_vfp_negs, a->vd, a->vm);
|
||||
}
|
||||
|
||||
static bool trans_VNEG_dp(DisasContext *s, arg_VNEG_dp *a)
|
||||
{
|
||||
return do_vfp_2op_dp(s, gen_helper_vfp_negd, a->vd, a->vm);
|
||||
}
|
||||
|
||||
static void gen_VSQRT_sp(TCGContext *tcg_ctx, TCGv_i32 vd, TCGv_i32 vm)
|
||||
{
|
||||
gen_helper_vfp_sqrts(tcg_ctx, vd, vm, tcg_ctx->cpu_env);
|
||||
}
|
||||
|
||||
static bool trans_VSQRT_sp(DisasContext *s, arg_VSQRT_sp *a)
|
||||
{
|
||||
return do_vfp_2op_sp(s, gen_VSQRT_sp, a->vd, a->vm);
|
||||
}
|
||||
|
||||
static void gen_VSQRT_dp(TCGContext *tcg_ctx, TCGv_i64 vd, TCGv_i64 vm)
|
||||
{
|
||||
gen_helper_vfp_sqrtd(tcg_ctx, vd, vm, tcg_ctx->cpu_env);
|
||||
}
|
||||
|
||||
static bool trans_VSQRT_dp(DisasContext *s, arg_VSQRT_dp *a)
|
||||
{
|
||||
return do_vfp_2op_dp(s, gen_VSQRT_dp, a->vd, a->vm);
|
||||
}
|
||||
DO_VFP_2OP(VSQRT, sp, gen_VSQRT_sp)
|
||||
DO_VFP_2OP(VSQRT, dp, gen_VSQRT_dp)
|
||||
|
||||
static bool trans_VCMP_sp(DisasContext *s, arg_VCMP_sp *a)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue