I think this will be the last revision before queueing for pull. Peter, the target/arm patches here are primarily for testing, without having to go all the way through to SVE. It also shows how the generic vector interface ought to be used. I'm happy to drop the patches from the tcg pull and feed them through target-arm.next, or keep them here as you wish.
r~ Minor changes since v8: * Reduce some code duplication within the patches. * Add vector op scalar interface. Minor changes since v7: * Rearranged the patches into groups for readability. * Squished the tcg/i386 patches. * Fixed an encoding bug for vmovd xmm, reg (Kirill). * Fixed expansion bugs for i386 sar, trn. Minor changes since v6: * Two bugs fixed pointed out by Kirill. * Allow for 4 and 5 operand operations. Richard Henderson (26): tcg: Allow multiple word entries into the constant pool tcg: Add types and basic operations for host vectors tcg: Standardize integral arguments to expanders tcg: Add generic vector expanders tcg: Add generic vector ops for interleave tcg: Add generic vector ops for constant shifts tcg: Add generic vector ops for comparisons tcg: Add generic vector ops for multiplication tcg: Add generic vector ops for extension tcg: Add generic helpers for saturating arithmetic tcg: Loosen vec_gen_op* typecheck rules tcg: Add generic vector helpers with a scalar immediate operand tcg: Add generic vector helpers with a scalar variable operand tcg/optimize: Handle vector opcodes during optimize target/arm: Align vector registers target/arm: Use vector infrastructure for aa64 add/sub/logic target/arm: Use vector infrastructure for aa64 mov/not/neg target/arm: Use vector infrastructure for aa64 dup/movi target/arm: Use vector infrastructure for aa64 zip/uzp/trn/xtn target/arm: Use vector infrastructure for aa64 constant shifts target/arm: Use vector infrastructure for aa64 compares target/arm: Use vector infrastructure for aa64 multiplies target/arm: Use vector infrastructure for aa64 widening shifts target/arm: Use vector infrastructure for aa64 orr/bic immediate tcg/i386: Add vector operations tcg/aarch64: Add vector operations Makefile.target | 4 +- accel/tcg/tcg-runtime.h | 141 +++ target/arm/cpu.h | 2 +- tcg/aarch64/tcg-target.h | 30 +- tcg/aarch64/tcg-target.opc.h | 3 + tcg/i386/tcg-target.h | 46 +- tcg/i386/tcg-target.opc.h | 13 + tcg/tcg-gvec-desc.h | 49 + tcg/tcg-op-gvec.h | 319 +++++ tcg/tcg-op.h | 67 +- tcg/tcg-opc.h | 59 + tcg/tcg.h | 84 ++ accel/tcg/tcg-runtime-gvec.c | 1064 +++++++++++++++++ target/arm/translate-a64.c | 1106 ++++++++++++------ tcg/aarch64/tcg-target.inc.c | 674 ++++++++++- tcg/i386/tcg-target.inc.c | 1331 ++++++++++++++++++++- tcg/optimize.c | 150 +-- tcg/tcg-op-gvec.c | 2653 ++++++++++++++++++++++++++++++++++++++++++ tcg/tcg-op-vec.c | 566 +++++++++ tcg/tcg-op.c | 42 +- tcg/tcg-pool.inc.c | 115 +- tcg/tcg.c | 144 ++- accel/tcg/Makefile.objs | 2 +- tcg/README | 148 +++ 24 files changed, 8244 insertions(+), 568 deletions(-) create mode 100644 tcg/aarch64/tcg-target.opc.h create mode 100644 tcg/i386/tcg-target.opc.h create mode 100644 tcg/tcg-gvec-desc.h create mode 100644 tcg/tcg-op-gvec.h create mode 100644 accel/tcg/tcg-runtime-gvec.c create mode 100644 tcg/tcg-op-gvec.c create mode 100644 tcg/tcg-op-vec.c -- 2.14.3