All of lore.kernel.org
 help / color / mirror / Atom feed
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



             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.