qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 00/23] target/i386: make SSE helpers generic in the vector siz


From: Paolo Bonzini
Subject: [PATCH v3 00/23] target/i386: make SSE helpers generic in the vector size
Date: Thu, 1 Sep 2022 09:48:19 +0200

This is the first half of Paul's series from last April, reorganized
so that there is no need for YMM_ONLY and SHIFT == 2 does not appear
yet.  This means that it is independent of Paul's implementation
of AVX decoding.

This generally uses 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; this is
done with a new macro LANE_WIDTH that is currently the same as the register
width, but remains 16 for AVX registers.

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

Supersedes: <20220826231204.201395-1-pbonzini@redhat.com>
Based-on: <20220825164827.392942-1-pbonzini@redhat.com>

v2->v3: convert remaining lane-based operations (hadd/hsub, psrldq)
        unify MMX and SSE hadd/hsub
        move code generation after illegal_op checks
        remove C++ comments

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

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        | 1781 +++++++++++++++++-----------------
 target/i386/ops_sse_header.h |   68 +-
 target/i386/tcg/translate.c  |  831 +++++++++-------
 3 files changed, 1391 insertions(+), 1289 deletions(-)

-- 
2.37.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]