This is the first half of Paul's series from last April, reorganized to have no occurrence of YMM_ONLY or SHIFT == 2---meaning it can be committed without much fuss, even without a plan for the implementation of AVX decoding.
In most cases this is done by using loops that apply the same code for all of MMX/SSE/AVX, and in fact this series removes basically all uses of XMM_ONLY in the code. In some cases AVX needs special-casing for the two 128-bit lanes and then this code is simply missing. The missing helper code is only 10 lines though, so this _is_ the lion share of the work to adapt the existing helpers. The full work, with the AVX parts rebased on top of these, is at branch i386-avx of https://gitlab.com/bonzini/qemu. The branch passes the tests that Paul had posted, while this reduced part passes the reduced SSE version. Paolo v1->v2: get rid of XMM_ONLY do not special case PMULHRW (yet) remove dead macro for blend do not copy table entries on the stack remove AVXisms from sse_op_table rework extract more code from the AVX patches Based-on: <20220825164827.392942-1-pbonz...@redhat.com> Paolo Bonzini (6): i386: do not use MOVL to move data between SSE registers i386: formatting fixes i386: check SSE table flags instead of hardcoding opcodes i386: isolate MMX code more i386: Add size suffix to vector FP helpers i386: do not cast gen_helper_* function pointers Paul Brook (17): i386: Add ZMM_OFFSET macro i386: Rework sse_op_table1 i386: Rework sse_op_table6/7 i386: Move 3DNOW decoder i386: Add CHECK_NO_VEX i386: Rewrite vector shift helper i386: Rewrite simple integer vector helpers i386: Misc integer AVX helper prep i386: Destructive vector helpers for AVX i386: Floating point arithmetic helper AVX prep i386: reimplement AVX comparison helpers i386: Dot product AVX helper prep i386: Destructive FP helpers for AVX i386: Misc AVX helper prep i386: Rewrite blendv helpers i386: AVX pclmulqdq prep i386: AVX+AES helpers prep target/i386/ops_sse.h | 1770 +++++++++++++++++----------------- target/i386/ops_sse_header.h | 68 +- target/i386/tcg/translate.c | 831 +++++++++------- 3 files changed, 1404 insertions(+), 1265 deletions(-) -- 2.37.1