qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH v2 28/37] target/i386: reimplement 0x0f 0x38, add AVX


From: Richard Henderson
Subject: Re: [PATCH v2 28/37] target/i386: reimplement 0x0f 0x38, add AVX
Date: Sat, 24 Sep 2022 21:14:40 +0000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0

On 9/20/22 17:24, Paolo Bonzini wrote:
There are several special cases here:

1) extending moves have different widths for the helpers vs. for the
memory loads, and the width for memory loads depends on VEX.L too.
This is represented by X86_SPECIAL_AVXExtMov.

2) some instructions, such as variable-width shifts, select the vector element
size via REX.W.

3) VSIB instructions (VGATHERxPy, VPGATHERxy) are also part of this group,
and they have (among other things) two output operands.

3) the macros for 4-operand blends (which are under 0x0f 0x3a) have to be
extended to support 2-operand blends.  The 2-operand variant actually
came a few years earlier, but it is clearer to implement them in the
opposite order.

X86_TYPE_WM, introduced earlier for unaligned loads, is reused for helpers
that accept a Reg* but have a M argument.

These three-byte opcodes also include AVX new instructions, for which
the helpers were originally implemented by Paul Brook<paul@nowt.org>.

Signed-off-by: Paolo Bonzini<pbonzini@redhat.com>
---
  target/i386/ops_sse.h            | 188 ++++++++++++++++++++++++++-
  target/i386/ops_sse_header.h     |  19 +++
  target/i386/tcg/decode-new.c.inc | 112 ++++++++++++++++-
  target/i386/tcg/decode-new.h     |   6 +
  target/i386/tcg/emit.c.inc       | 210 ++++++++++++++++++++++++++++++-
  target/i386/tcg/translate.c      |   2 +-
  6 files changed, 529 insertions(+), 8 deletions(-)

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>



reply via email to

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