mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
target/arm: Convert Neon 2-reg-misc VRINT insns to decodetree
Convert the Neon 2-reg-misc VRINT insns to decodetree. Giving these insns their own do_vrint() function allows us to change the rounding mode just once at the start and end rather than doing it for every element in the vector. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200616170844.13318-18-peter.maydell@linaro.org
This commit is contained in:
parent
baa59323e8
commit
128123ea34
3 changed files with 74 additions and 26 deletions
|
@ -4959,6 +4959,11 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
case NEON_2RM_VCEQ0_F:
|
||||
case NEON_2RM_VCLE0_F:
|
||||
case NEON_2RM_VCLT0_F:
|
||||
case NEON_2RM_VRINTN:
|
||||
case NEON_2RM_VRINTA:
|
||||
case NEON_2RM_VRINTM:
|
||||
case NEON_2RM_VRINTP:
|
||||
case NEON_2RM_VRINTZ:
|
||||
/* handled by decodetree */
|
||||
return 1;
|
||||
case NEON_2RM_VTRN:
|
||||
|
@ -4993,32 +4998,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
}
|
||||
neon_store_reg(rm, pass, tmp2);
|
||||
break;
|
||||
case NEON_2RM_VRINTN:
|
||||
case NEON_2RM_VRINTA:
|
||||
case NEON_2RM_VRINTM:
|
||||
case NEON_2RM_VRINTP:
|
||||
case NEON_2RM_VRINTZ:
|
||||
{
|
||||
TCGv_i32 tcg_rmode;
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
int rmode;
|
||||
|
||||
if (op == NEON_2RM_VRINTZ) {
|
||||
rmode = FPROUNDING_ZERO;
|
||||
} else {
|
||||
rmode = fp_decode_rm[((op & 0x6) >> 1) ^ 1];
|
||||
}
|
||||
|
||||
tcg_rmode = tcg_const_i32(arm_rmode_to_sf(rmode));
|
||||
gen_helper_set_neon_rmode(tcg_rmode, tcg_rmode,
|
||||
cpu_env);
|
||||
gen_helper_rints(tmp, tmp, fpstatus);
|
||||
gen_helper_set_neon_rmode(tcg_rmode, tcg_rmode,
|
||||
cpu_env);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
tcg_temp_free_i32(tcg_rmode);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VCVTAU:
|
||||
case NEON_2RM_VCVTAS:
|
||||
case NEON_2RM_VCVTNU:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue