target/arm: Convert Neon 3-reg-diff prewidening ops to decodetree
commitb28be09570d0827969b62b8f82b0f720a9915427
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Jun 2020 09:32:25 +0000 (16 10:32 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Jun 2020 09:32:25 +0000 (16 10:32 +0100)
treef9e7883067c6f21e1fe8f40b10ee3736a10e698a
parent9593a3988c3e788790aa107d778386b09f456a6d
target/arm: Convert Neon 3-reg-diff prewidening ops to decodetree

Convert the "pre-widening" insns VADDL, VSUBL, VADDW and VSUBW
in the Neon 3-registers-different-lengths group to decodetree.
These insns work by widening one or both inputs to double their
size, performing an add or subtract at the doubled size and
then storing the double-size result.

As usual, rather than copying the loop of the original decoder
(which needs awkward code to avoid problems when source and
destination registers overlap) we just unroll the two passes.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
target/arm/neon-dp.decode
target/arm/translate-neon.inc.c
target/arm/translate.c