aboutsummaryrefslogtreecommitdiff
path: root/target/arm/translate.c
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2020-06-16 10:32:28 +0100
committerPeter Maydell <peter.maydell@linaro.org>2020-06-16 10:32:28 +0100
commit9aaa23c2ae18e6fb9a291b81baf91341db76dfa0 (patch)
tree7482699ac999a191de68fb6b3d61d26e11c6b35c /target/arm/translate.c
parent54e96c744b70a5d19f14b212a579dd3be8fcaad9 (diff)
downloadqemu-9aaa23c2ae18e6fb9a291b81baf91341db76dfa0.zip
qemu-9aaa23c2ae18e6fb9a291b81baf91341db76dfa0.tar.gz
qemu-9aaa23c2ae18e6fb9a291b81baf91341db76dfa0.tar.bz2
target/arm: Convert Neon VDUP (scalar) to decodetree
Convert the Neon VDUP (scalar) insn to decodetree. (Note that we can't call this just "VDUP" as we used that already in vfp.decode for the "VDUP (general purpose register" insn.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'target/arm/translate.c')
-rw-r--r--target/arm/translate.c25
1 files changed, 1 insertions, 24 deletions
diff --git a/target/arm/translate.c b/target/arm/translate.c
index 0c64259..6d18892 100644
--- a/target/arm/translate.c
+++ b/target/arm/translate.c
@@ -5574,31 +5574,8 @@ static int disas_neon_data_insn(DisasContext *s, uint32_t insn)
}
break;
}
- } else if ((insn & (1 << 10)) == 0) {
- /* VTBL, VTBX: handled by decodetree */
- return 1;
- } else if ((insn & 0x380) == 0) {
- /* VDUP */
- int element;
- MemOp size;
-
- if ((insn & (7 << 16)) == 0 || (q && (rd & 1))) {
- return 1;
- }
- if (insn & (1 << 16)) {
- size = MO_8;
- element = (insn >> 17) & 7;
- } else if (insn & (1 << 17)) {
- size = MO_16;
- element = (insn >> 18) & 3;
- } else {
- size = MO_32;
- element = (insn >> 19) & 1;
- }
- tcg_gen_gvec_dup_mem(size, neon_reg_offset(rd, 0),
- neon_element_offset(rm, element, size),
- q ? 16 : 8, q ? 16 : 8);
} else {
+ /* VTBL, VTBX, VDUP: handled by decodetree */
return 1;
}
}