mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 17:23:56 -06:00
target/arm: Convert Neon 2-reg-misc fp-compare-with-zero insns to decodetree
Convert the fp-compare-with-zero insns in the Neon 2-reg-misc group to decodetree. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200616170844.13318-17-peter.maydell@linaro.org
This commit is contained in:
parent
3e96b20528
commit
baa59323e8
3 changed files with 39 additions and 45 deletions
|
@ -4954,6 +4954,11 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
case NEON_2RM_VCVT_SF:
|
||||
case NEON_2RM_VCVT_UF:
|
||||
case NEON_2RM_VRINTX:
|
||||
case NEON_2RM_VCGT0_F:
|
||||
case NEON_2RM_VCGE0_F:
|
||||
case NEON_2RM_VCEQ0_F:
|
||||
case NEON_2RM_VCLE0_F:
|
||||
case NEON_2RM_VCLT0_F:
|
||||
/* handled by decodetree */
|
||||
return 1;
|
||||
case NEON_2RM_VTRN:
|
||||
|
@ -4975,51 +4980,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
for (pass = 0; pass < (q ? 4 : 2); pass++) {
|
||||
tmp = neon_load_reg(rm, pass);
|
||||
switch (op) {
|
||||
case NEON_2RM_VCGT0_F:
|
||||
{
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
tmp2 = tcg_const_i32(0);
|
||||
gen_helper_neon_cgt_f32(tmp, tmp, tmp2, fpstatus);
|
||||
tcg_temp_free_i32(tmp2);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VCGE0_F:
|
||||
{
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
tmp2 = tcg_const_i32(0);
|
||||
gen_helper_neon_cge_f32(tmp, tmp, tmp2, fpstatus);
|
||||
tcg_temp_free_i32(tmp2);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VCEQ0_F:
|
||||
{
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
tmp2 = tcg_const_i32(0);
|
||||
gen_helper_neon_ceq_f32(tmp, tmp, tmp2, fpstatus);
|
||||
tcg_temp_free_i32(tmp2);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VCLE0_F:
|
||||
{
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
tmp2 = tcg_const_i32(0);
|
||||
gen_helper_neon_cge_f32(tmp, tmp2, tmp, fpstatus);
|
||||
tcg_temp_free_i32(tmp2);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VCLT0_F:
|
||||
{
|
||||
TCGv_ptr fpstatus = get_fpstatus_ptr(1);
|
||||
tmp2 = tcg_const_i32(0);
|
||||
gen_helper_neon_cgt_f32(tmp, tmp2, tmp, fpstatus);
|
||||
tcg_temp_free_i32(tmp2);
|
||||
tcg_temp_free_ptr(fpstatus);
|
||||
break;
|
||||
}
|
||||
case NEON_2RM_VSWP:
|
||||
tmp2 = neon_load_reg(rd, pass);
|
||||
neon_store_reg(rm, pass, tmp2);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue