[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
- [PATCH v3 00/23] target/i386: make SSE helpers generic in the vector size,
Paolo Bonzini <=
- [PATCH v3 02/23] i386: formatting fixes, Paolo Bonzini, 2022/09/01
- [PATCH v3 01/23] i386: do not use MOVL to move data between SSE registers, Paolo Bonzini, 2022/09/01
- [PATCH v3 07/23] i386: check SSE table flags instead of hardcoding opcodes, Paolo Bonzini, 2022/09/01
- [PATCH v3 05/23] i386: Rework sse_op_table6/7, Paolo Bonzini, 2022/09/01
- [PATCH v3 03/23] i386: Add ZMM_OFFSET macro, Paolo Bonzini, 2022/09/01
- [PATCH v3 06/23] i386: Move 3DNOW decoder, Paolo Bonzini, 2022/09/01
- [PATCH v3 08/23] i386: isolate MMX code more, Paolo Bonzini, 2022/09/01
- [PATCH v3 09/23] i386: Add size suffix to vector FP helpers, Paolo Bonzini, 2022/09/01
- [PATCH v3 04/23] i386: Rework sse_op_table1, Paolo Bonzini, 2022/09/01