mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-03-23 06:25:12 +00:00
target/arm: Use gvec for NEON_3R_VADD_VSUB insns
Backports commit e4717ae02dd0c2e544a07302c1ed473775209aba from qemu
This commit is contained in:
parent
0965b9513a
commit
7b4b5ac249
|
@ -6113,6 +6113,16 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
break;
|
||||
}
|
||||
return 0;
|
||||
|
||||
case NEON_3R_VADD_VSUB:
|
||||
if (u) {
|
||||
tcg_gen_gvec_sub(tcg_ctx, size, rd_ofs, rn_ofs, rm_ofs,
|
||||
vec_size, vec_size);
|
||||
} else {
|
||||
tcg_gen_gvec_add(tcg_ctx, size, rd_ofs, rn_ofs, rm_ofs,
|
||||
vec_size, vec_size);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
if (size == 3) {
|
||||
/* 64-bit element instructions. */
|
||||
|
@ -6170,13 +6180,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
s->V1, s->V0);
|
||||
}
|
||||
break;
|
||||
case NEON_3R_VADD_VSUB:
|
||||
if (u) {
|
||||
tcg_gen_sub_i64(tcg_ctx, CPU_V001);
|
||||
} else {
|
||||
tcg_gen_add_i64(tcg_ctx, CPU_V001);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
}
|
||||
|
@ -6311,18 +6314,6 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
|
|||
tmp2 = neon_load_reg(s, rd, pass);
|
||||
gen_neon_add(s, size, tmp, tmp2);
|
||||
break;
|
||||
case NEON_3R_VADD_VSUB:
|
||||
if (!u) { /* VADD */
|
||||
gen_neon_add(s, size, tmp, tmp2);
|
||||
} else { /* VSUB */
|
||||
switch (size) {
|
||||
case 0: gen_helper_neon_sub_u8(tcg_ctx, tmp, tmp, tmp2); break;
|
||||
case 1: gen_helper_neon_sub_u16(tcg_ctx, tmp, tmp, tmp2); break;
|
||||
case 2: tcg_gen_sub_i32(tcg_ctx, tmp, tmp, tmp2); break;
|
||||
default: abort();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NEON_3R_VTST_VCEQ:
|
||||
if (!u) { /* VTST */
|
||||
switch (size) {
|
||||
|
|
Loading…
Reference in a new issue