qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/23] target/i386: make SSE helpers generic in the vector size
@ 2022-09-01  7:48 Paolo Bonzini
  2022-09-01  7:48 ` [PATCH v3 01/23] i386: do not use MOVL to move data between SSE registers Paolo Bonzini
                   ` (22 more replies)
  0 siblings, 23 replies; 29+ messages in thread
From: Paolo Bonzini @ 2022-09-01  7:48 UTC (permalink / raw)
  To: qemu-devel; +Cc: paul, richard.henderson

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



^ permalink raw reply	[flat|nested] 29+ messages in thread

end of thread, other threads:[~2022-09-01  9:22 UTC | newest]

Thread overview: 29+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-09-01  7:48 [PATCH v3 00/23] target/i386: make SSE helpers generic in the vector size Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 01/23] i386: do not use MOVL to move data between SSE registers Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 02/23] i386: formatting fixes Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 03/23] i386: Add ZMM_OFFSET macro Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 04/23] i386: Rework sse_op_table1 Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 05/23] i386: Rework sse_op_table6/7 Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 06/23] i386: Move 3DNOW decoder Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 07/23] i386: check SSE table flags instead of hardcoding opcodes Paolo Bonzini
2022-09-01  8:05   ` Richard Henderson
2022-09-01  7:48 ` [PATCH v3 08/23] i386: isolate MMX code more Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 09/23] i386: Add size suffix to vector FP helpers Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 10/23] i386: do not cast gen_helper_* function pointers Paolo Bonzini
2022-09-01  8:10   ` Richard Henderson
2022-09-01  7:48 ` [PATCH v3 11/23] i386: Add CHECK_NO_VEX Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 12/23] i386: Rewrite vector shift helper Paolo Bonzini
2022-09-01  8:11   ` Richard Henderson
2022-09-01  7:48 ` [PATCH v3 13/23] i386: Rewrite simple integer vector helpers Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 14/23] i386: Misc integer AVX helper prep Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 15/23] i386: Destructive vector helpers for AVX Paolo Bonzini
2022-09-01  8:16   ` Richard Henderson
2022-09-01  7:48 ` [PATCH v3 16/23] i386: Floating point arithmetic helper AVX prep Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 17/23] i386: reimplement AVX comparison helpers Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 18/23] i386: Dot product AVX helper prep Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 19/23] i386: Destructive FP helpers for AVX Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 20/23] i386: Misc AVX helper prep Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 21/23] i386: Rewrite blendv helpers Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 22/23] i386: AVX pclmulqdq prep Paolo Bonzini
2022-09-01  7:48 ` [PATCH v3 23/23] i386: AVX+AES helpers prep Paolo Bonzini
2022-09-01  8:19   ` Richard Henderson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).