This is not complete, but shows the direction I'd like to go. It may well help what Peter is doing with the neon decodetree conversion. It may be helpful to apply before the conversion in order to reduce the number of special cases. As may continuing with the cleanup; I'll probably work on that more next week.
Version 2 extracts more bits from my sve2 branch. There's still more to pull back, especially for crypto_helper.c, where there are also tail clearing bugs to fix. r~ Richard Henderson (15): target/arm: Create gen_gvec_[us]sra target/arm: Create gen_gvec_{u,s}{rshr,rsra} target/arm: Create gen_gvec_{sri,sli} target/arm: Remove unnecessary range check for VSHL target/arm: Tidy handle_vec_simd_shri target/arm: Wrap vector compare zero GVecGen2 in GVecGen2Fn target/arm: Wrap vector mla/mls GVecGen3 in GVecGen3Fn target/arm: Wrap vector cmtst/ushl/sshl GVecGen3 in GVecGen3Fn target/arm: Wrap vector uqadd/sqadd/uqsub/sqsub GVecGen4 in GVecGen3Fn target/arm: Remove fp_status from helper_{recpe,rsqrte}_u32 target/arm: Wrap vector qrdmla/qrdmls in GVecGen3Fn target/arm: Pass pointer to qc to qrdmla/qrdmls target/arm: Clear tail in gvec_fmul_idx_*, gvec_fmla_idx_* target/arm: Vectorize SABD/UABD target/arm: Vectorize SABA/UABA target/arm/helper.h | 71 +- target/arm/translate.h | 84 +- target/arm/neon_helper.c | 10 - target/arm/translate-a64.c | 210 ++-- target/arm/translate.c | 1948 ++++++++++++++++++++++++------------ target/arm/vec_helper.c | 233 ++++- target/arm/vfp_helper.c | 4 +- 7 files changed, 1679 insertions(+), 881 deletions(-) -- 2.20.1