This extremely dull patch set cleans up the UNDEF handling in the Neon data processing instruction space, so that we UNDEF in all the cases where the architecture demands it, and do so early enough that we don't leak a TCG temporary in the process. It also fixes the handling of the one UNPREDICTABLE in the space, and does some minor cleanup that is possible once you know the UNDEF cases have been caught earlier.
The patchset is inspired by a number of patches from the qemu-meego tree, although in most cases I ended up writing a more generic check rather than using Juha's patches directly. The order of patches matches the order in which disas_neon_data_insn() handles the various subcases. This has been tested via the usual random-instruction-sequence testing with a set of patterns that cover all of the Neon dp insn space. [This means that in the process I ended up also testing the actual functionality of all the Neon dp insns; I only found one bug, which I'll send a patch for in a moment.] Juha Riihimäki (2): target-arm: Simplify three-register pairwise code target-arm: Handle UNDEF cases for VDUP (scalar) Peter Maydell (11): target-arm: Use lookup table for size check on Neon 3-reg-same insns target-arm: Handle UNDEF cases for Neon 3-regs-same insns target-arm: Handle UNDEF cases for Neon "2 regs and shift" insns target-arm: Collapse VSRI case into VSHL,VSLI target-arm: Handle UNDEF cases for Neon invalid modified-immediates target-arm: Handle UNDEF cases for Neon 3-regs-different-widths target-arm: Handle UNDEF cases for Neon 2 regs + scalar forms target-arm: Handle UNDEF cases for VEXT target-arm: Simplify checking of size field in Neon 2reg-misc forms target-arm: Handle UNDEF cases for Neon 2 register misc forms target-arm: Treat UNPREDICTABLE VTBL,VTBX case as UNDEF target-arm/translate.c | 698 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 483 insertions(+), 215 deletions(-)