From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Subject: [PATCH v2 00/29] tcg: bswap improvements
Date: Mon, 21 Jun 2021 16:18:20 -0700 [thread overview]
Message-ID: <20210621231849.1871164-1-richard.henderson@linaro.org> (raw)
This has been on my to-do list for several years, and I've
finally spent a rainy weekend doing something about it.
The current tcg bswap opcode is fairly strict: for swaps smaller
than the TCGv size, it requires zero-extended input and provides
zero-extended output.
This has meant that various tcg/ backends have their own handling
of bswap when it comes to memory, to minimize overhead for stores
(which do not care about zero-extended output) or for signed loads
(which would rather not sign-extend after zero-extending).
Solve this by adding some operation flags to the tcg bswap opcode:
TCG_BSWAP_IZ -- Input is Zero extended
TCG_BSWAP_OZ -- Output is Zero extended
TCG_BSWAP_OS -- Output is Sign extended
For instance, bswap before store would not set any of these flags,
allowing unextended input and producing unextended output.
Changes for v2:
* Merge tcg_out_rev{16,32,64}, which perhaps solves the issue of
mnemonics vs actual opcodes, and also preps for Phil suggestion
of adding additional tcg opcodes for hswap and wswap operations.
* Improve comments for ppc bswap.
* Improve README entries.
Patches lacking review/ack:
03-tcg-aarch64-Merge-tcg_out_rev-16-32-64.patch
11-tcg-ppc-Support-bswap-flags.patch
12-tcg-ppc-Use-power10-byte-reverse-instructions.patch
13-tcg-s390-Support-bswap-flags.patch
14-tcg-mips-Support-bswap-flags-in-tcg_out_bswap16.patch
r~
Richard Henderson (29):
tcg: Add flags argument to bswap opcodes
tcg/i386: Support bswap flags
tcg/aarch64: Merge tcg_out_rev{16,32,64}
tcg/aarch64: Support bswap flags
tcg/arm: Support bswap flags
tcg/ppc: Split out tcg_out_ext{8,16,32}s
tcg/ppc: Split out tcg_out_sari{32,64}
tcg/ppc: Split out tcg_out_bswap16
tcg/ppc: Split out tcg_out_bswap32
tcg/ppc: Split out tcg_out_bswap64
tcg/ppc: Support bswap flags
tcg/ppc: Use power10 byte-reverse instructions
tcg/s390: Support bswap flags
tcg/mips: Support bswap flags in tcg_out_bswap16
tcg/mips: Support bswap flags in tcg_out_bswap32
tcg/tci: Support bswap flags
tcg: Handle new bswap flags during optimize
tcg: Add flags argument to tcg_gen_bswap16_*, tcg_gen_bswap32_i64
tcg: Make use of bswap flags in tcg_gen_qemu_ld_*
tcg: Make use of bswap flags in tcg_gen_qemu_st_*
target/arm: Improve REV32
target/arm: Improve vector REV
target/arm: Improve REVSH
target/i386: Improve bswap translation
target/sh4: Improve swap.b translation
target/mips: Fix gen_mxu_s32ldd_s32lddr
tcg/arm: Unset TCG_TARGET_HAS_MEMORY_BSWAP
tcg/aarch64: Unset TCG_TARGET_HAS_MEMORY_BSWAP
tcg/riscv: Remove MO_BSWAP handling
include/tcg/tcg-op.h | 8 +-
include/tcg/tcg-opc.h | 10 +-
include/tcg/tcg.h | 12 ++
tcg/aarch64/tcg-target.h | 2 +-
tcg/arm/tcg-target.h | 2 +-
target/arm/translate-a64.c | 21 +--
target/arm/translate.c | 4 +-
target/i386/tcg/translate.c | 14 +-
target/mips/tcg/mxu_translate.c | 6 +-
target/s390x/translate.c | 4 +-
target/sh4/translate.c | 3 +-
tcg/optimize.c | 56 +++++-
tcg/tcg-op.c | 143 ++++++++++------
tcg/tcg.c | 28 +++
tcg/tci.c | 3 +-
tcg/aarch64/tcg-target.c.inc | 125 ++++++--------
tcg/arm/tcg-target.c.inc | 295 ++++++++++++++------------------
tcg/i386/tcg-target.c.inc | 20 ++-
tcg/mips/tcg-target.c.inc | 99 +++++------
tcg/ppc/tcg-target.c.inc | 230 +++++++++++++++++--------
tcg/riscv/tcg-target.c.inc | 64 +++----
tcg/s390/tcg-target.c.inc | 34 +++-
tcg/tci/tcg-target.c.inc | 23 ++-
tcg/README | 22 ++-
24 files changed, 702 insertions(+), 526 deletions(-)
--
2.25.1
next reply other threads:[~2021-06-21 23:20 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-21 23:18 Richard Henderson [this message]
2021-06-21 23:18 ` [PATCH v2 01/29] tcg: Add flags argument to bswap opcodes Richard Henderson
2021-06-21 23:18 ` [PATCH v2 02/29] tcg/i386: Support bswap flags Richard Henderson
2021-06-21 23:18 ` [PATCH v2 03/29] tcg/aarch64: Merge tcg_out_rev{16,32,64} Richard Henderson
2021-06-21 23:18 ` [PATCH v2 04/29] tcg/aarch64: Support bswap flags Richard Henderson
2021-06-21 23:18 ` [PATCH v2 05/29] tcg/arm: " Richard Henderson
2021-06-21 23:18 ` [PATCH v2 06/29] tcg/ppc: Split out tcg_out_ext{8,16,32}s Richard Henderson
2021-06-21 23:18 ` [PATCH v2 07/29] tcg/ppc: Split out tcg_out_sari{32,64} Richard Henderson
2021-06-21 23:18 ` [PATCH v2 08/29] tcg/ppc: Split out tcg_out_bswap16 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 09/29] tcg/ppc: Split out tcg_out_bswap32 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 10/29] tcg/ppc: Split out tcg_out_bswap64 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 11/29] tcg/ppc: Support bswap flags Richard Henderson
2021-06-21 23:18 ` [PATCH v2 12/29] tcg/ppc: Use power10 byte-reverse instructions Richard Henderson
2021-06-21 23:18 ` [PATCH v2 13/29] tcg/s390: Support bswap flags Richard Henderson
2021-06-21 23:18 ` [PATCH v2 14/29] tcg/mips: Support bswap flags in tcg_out_bswap16 Richard Henderson
2021-06-22 6:48 ` Philippe Mathieu-Daudé
2021-06-21 23:18 ` [PATCH v2 15/29] tcg/mips: Support bswap flags in tcg_out_bswap32 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 16/29] tcg/tci: Support bswap flags Richard Henderson
2021-06-21 23:18 ` [PATCH v2 17/29] tcg: Handle new bswap flags during optimize Richard Henderson
2021-06-21 23:18 ` [PATCH v2 18/29] tcg: Add flags argument to tcg_gen_bswap16_*, tcg_gen_bswap32_i64 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 19/29] tcg: Make use of bswap flags in tcg_gen_qemu_ld_* Richard Henderson
2021-06-22 6:46 ` Philippe Mathieu-Daudé
2021-06-21 23:18 ` [PATCH v2 20/29] tcg: Make use of bswap flags in tcg_gen_qemu_st_* Richard Henderson
2021-06-21 23:18 ` [PATCH v2 21/29] target/arm: Improve REV32 Richard Henderson
2021-06-21 23:18 ` [PATCH v2 22/29] target/arm: Improve vector REV Richard Henderson
2021-06-22 6:47 ` Philippe Mathieu-Daudé
2021-06-21 23:18 ` [PATCH v2 23/29] target/arm: Improve REVSH Richard Henderson
2021-06-21 23:18 ` [PATCH v2 24/29] target/i386: Improve bswap translation Richard Henderson
2021-06-21 23:18 ` [PATCH v2 25/29] target/sh4: Improve swap.b translation Richard Henderson
2021-06-21 23:18 ` [PATCH v2 26/29] target/mips: Fix gen_mxu_s32ldd_s32lddr Richard Henderson
2021-06-21 23:18 ` [PATCH v2 27/29] tcg/arm: Unset TCG_TARGET_HAS_MEMORY_BSWAP Richard Henderson
2021-06-21 23:18 ` [PATCH v2 28/29] tcg/aarch64: " Richard Henderson
2021-06-21 23:18 ` [PATCH v2 29/29] tcg/riscv: Remove MO_BSWAP handling Richard Henderson
2021-06-21 23:45 ` [PATCH v2 00/29] tcg: bswap improvements no-reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210621231849.1871164-1-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.