target/arm: Convert Neon 2-reg-scalar integer multiplies to decodetree
commit96fc80f5f186decd1a649f6c04252faceb057ad2
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Jun 2020 09:32:27 +0000 (16 10:32 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 16 Jun 2020 09:32:27 +0000 (16 10:32 +0100)
treef70888655c2bb133ae1fb6381ab1db22f84a9166
parenta4f67e180def790ff0bbb33fc93bb6e80382f041
target/arm: Convert Neon 2-reg-scalar integer multiplies to decodetree

Convert the VMLA, VMLS and VMUL insns in the Neon "2 registers and a
scalar" group to decodetree.  These are 32x32->32 operations where
one of the inputs is the scalar, followed by a possible accumulate
operation of the 32-bit result.

The refactoring removes some of the oddities of the old decoder:
 * operands to the operation and accumulation were often
   reversed (taking advantage of the fact that most of these ops
   are commutative); the new code follows the pseudocode order
 * the Q bit in the insn was in a local variable 'u'; in the
   new code it is decoded into a->q

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