qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/57] tcg: Simplify calls to load/store helpers
@ 2023-04-24  5:40 Richard Henderson
  2023-04-24  5:40 ` [PATCH v3 01/57] tcg/loongarch64: Conditionalize tcg_out_exts_i32_i64 Richard Henderson
                   ` (56 more replies)
  0 siblings, 57 replies; 75+ messages in thread
From: Richard Henderson @ 2023-04-24  5:40 UTC (permalink / raw)
  To: qemu-devel; +Cc: qemu-arm, qemu-s390x, qemu-riscv, qemu-ppc, git, jiaxun.yang

v1: https://lore.kernel.org/qemu-devel/20230408024314.3357414-1-richard.henderson@linaro.org/
v2: https://lore.kernel.org/qemu-devel/20230411010512.5375-1-richard.henderson@linaro.org/

There are several changes to the load/store helpers coming, and making
sure that those changes are properly reflected across all of the backends
was harrowing.

I have gone back and restarted by hoisting the code out of the backends
and into tcg.c.  We already have all of the parameters for the host
function call abi for "normal" helpers, we simply need to apply that to
the load/store slow path.

The major change for v3 is prepare_host_addr(), as a merge of several
routines and some code from tcg_out_qemu_{ld,st}.  This is pulled back
from my (working) atomicity patch set, making i128 easier.

The patches are many, but take heart: the diffstat is -523. :-)
About 1/3 of the patches have been reviewed in some form.


r~


Richard Henderson (57):
  tcg/loongarch64: Conditionalize tcg_out_exts_i32_i64
  tcg/mips: Conditionalize tcg_out_exts_i32_i64
  tcg/i386: Conditionalize tcg_out_extu_i32_i64
  tcg: Introduce tcg_out_movext2
  tcg/i386: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/i386: Generalize multi-part load overlap test
  tcg/i386: Introduce HostAddress
  tcg/i386: Drop r0+r1 local variables from tcg_out_tlb_load
  tcg/i386: Introduce tcg_out_testi
  tcg/i386: Introduce prepare_host_addr
  tcg/i386: Use indexed addressing for softmmu fast path
  tcg/aarch64: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/aarch64: Introduce HostAddress
  tcg/aarch64: Introduce prepare_host_addr
  tcg/arm: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/arm: Introduce HostAddress
  tcg/arm: Introduce prepare_host_addr
  tcg/loongarch64: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/loongarch64: Introduce HostAddress
  tcg/loongarch64: Introduce prepare_host_addr
  tcg/mips: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/mips: Introduce prepare_host_addr
  tcg/ppc: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/ppc: Introduce HostAddress
  tcg/ppc: Introduce prepare_host_addr
  tcg/riscv: Require TCG_TARGET_REG_BITS == 64
  tcg/riscv: Rationalize args to tcg_out_qemu_{ld,st}
  tcg/riscv: Introduce prepare_host_addr
  tcg/s390x: Pass TCGType to tcg_out_qemu_{ld,st}
  tcg/s390x: Introduce HostAddress
  tcg/s390x: Introduce prepare_host_addr
  tcg/sparc64: Drop is_64 test from tcg_out_qemu_ld data return
  tcg/sparc64: Pass TCGType to tcg_out_qemu_{ld,st}
  tcg: Move TCGLabelQemuLdst to tcg.c
  tcg: Replace REG_P with arg_loc_reg_p
  tcg: Introduce arg_slot_stk_ofs
  tcg: Widen helper_*_st[bw]_mmu val arguments
  tcg: Add routines for calling slow-path helpers
  tcg/i386: Convert tcg_out_qemu_ld_slow_path
  tcg/i386: Convert tcg_out_qemu_st_slow_path
  tcg/aarch64: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/arm: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/loongarch64: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/mips: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/ppc: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/riscv: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/s390x: Convert tcg_out_qemu_{ld,st}_slow_path
  tcg/loongarch64: Simplify constraints on qemu_ld/st
  tcg/mips: Remove MO_BSWAP handling
  tcg/mips: Reorg tlb load within prepare_host_addr
  tcg/mips: Simplify constraints on qemu_ld/st
  tcg/ppc: Reorg tcg_out_tlb_read
  tcg/ppc: Adjust constraints on qemu_ld/st
  tcg/ppc: Remove unused constraints A, B, C, D
  tcg/riscv: Simplify constraints on qemu_ld/st
  tcg/s390x: Use ALGFR in constructing softmmu host address
  tcg/s390x: Simplify constraints on qemu_ld/st

 include/tcg/tcg-ldst.h               |  10 +-
 tcg/loongarch64/tcg-target-con-set.h |   2 -
 tcg/loongarch64/tcg-target-con-str.h |   1 -
 tcg/mips/tcg-target-con-set.h        |  13 +-
 tcg/mips/tcg-target-con-str.h        |   2 -
 tcg/mips/tcg-target.h                |   4 +-
 tcg/ppc/tcg-target-con-set.h         |  11 +-
 tcg/ppc/tcg-target-con-str.h         |   6 -
 tcg/riscv/tcg-target-con-set.h       |   8 -
 tcg/riscv/tcg-target-con-str.h       |   1 -
 tcg/riscv/tcg-target.h               |  22 +-
 tcg/s390x/tcg-target-con-set.h       |   2 -
 tcg/s390x/tcg-target-con-str.h       |   1 -
 tcg/tcg-internal.h                   |   4 -
 accel/tcg/cputlb.c                   |   6 +-
 tcg/tcg.c                            | 582 +++++++++++++++-
 tcg/aarch64/tcg-target.c.inc         | 363 +++++-----
 tcg/arm/tcg-target.c.inc             | 726 ++++++++------------
 tcg/i386/tcg-target.c.inc            | 707 +++++++++-----------
 tcg/loongarch64/tcg-target.c.inc     | 376 +++++------
 tcg/mips/tcg-target.c.inc            | 946 ++++++++-------------------
 tcg/ppc/tcg-target.c.inc             | 637 ++++++++----------
 tcg/riscv/tcg-target.c.inc           | 508 +++++---------
 tcg/s390x/tcg-target.c.inc           | 393 +++++------
 tcg/sparc64/tcg-target.c.inc         |   8 +-
 tcg/tcg-ldst.c.inc                   |  14 -
 26 files changed, 2415 insertions(+), 2938 deletions(-)

-- 
2.34.1



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

end of thread, other threads:[~2023-05-01  7:43 UTC | newest]

Thread overview: 75+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-24  5:40 [PATCH v3 00/57] tcg: Simplify calls to load/store helpers Richard Henderson
2023-04-24  5:40 ` [PATCH v3 01/57] tcg/loongarch64: Conditionalize tcg_out_exts_i32_i64 Richard Henderson
2023-04-25 19:40   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 02/57] tcg/mips: " Richard Henderson
2023-04-25 19:41   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 03/57] tcg/i386: Conditionalize tcg_out_extu_i32_i64 Richard Henderson
2023-04-25 19:41   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 04/57] tcg: Introduce tcg_out_movext2 Richard Henderson
2023-04-25 19:46   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 05/57] tcg/i386: Rationalize args to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 06/57] tcg/i386: Generalize multi-part load overlap test Richard Henderson
2023-04-29 13:01   ` Philippe Mathieu-Daudé
2023-05-01  7:42     ` Richard Henderson
2023-04-24  5:40 ` [PATCH v3 07/57] tcg/i386: Introduce HostAddress Richard Henderson
2023-04-25 19:54   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 08/57] tcg/i386: Drop r0+r1 local variables from tcg_out_tlb_load Richard Henderson
2023-04-25 19:55   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 09/57] tcg/i386: Introduce tcg_out_testi Richard Henderson
2023-04-24  5:40 ` [PATCH v3 10/57] tcg/i386: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 11/57] tcg/i386: Use indexed addressing for softmmu fast path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 12/57] tcg/aarch64: Rationalize args to tcg_out_qemu_{ld, st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 13/57] tcg/aarch64: Introduce HostAddress Richard Henderson
2023-04-25 14:22   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 14/57] tcg/aarch64: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 15/57] tcg/arm: Rationalize args to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 16/57] tcg/arm: Introduce HostAddress Richard Henderson
2023-04-24  5:40 ` [PATCH v3 17/57] tcg/arm: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 18/57] tcg/loongarch64: Rationalize args to tcg_out_qemu_{ld, st} Richard Henderson
2023-04-26 11:24   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 19/57] tcg/loongarch64: Introduce HostAddress Richard Henderson
2023-04-25 14:29   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 20/57] tcg/loongarch64: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 21/57] tcg/mips: Rationalize args to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-26 13:15   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 22/57] tcg/mips: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 23/57] tcg/ppc: Rationalize args to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 24/57] tcg/ppc: Introduce HostAddress Richard Henderson
2023-04-25 14:39   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 25/57] tcg/ppc: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 26/57] tcg/riscv: Require TCG_TARGET_REG_BITS == 64 Richard Henderson
2023-04-24  5:40 ` [PATCH v3 27/57] tcg/riscv: Rationalize args to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 28/57] tcg/riscv: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 29/57] tcg/s390x: Pass TCGType to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 30/57] tcg/s390x: Introduce HostAddress Richard Henderson
2023-04-25 14:40   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 31/57] tcg/s390x: Introduce prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 32/57] tcg/sparc64: Drop is_64 test from tcg_out_qemu_ld data return Richard Henderson
2023-04-24  5:40 ` [PATCH v3 33/57] tcg/sparc64: Pass TCGType to tcg_out_qemu_{ld,st} Richard Henderson
2023-04-24  5:40 ` [PATCH v3 34/57] tcg: Move TCGLabelQemuLdst to tcg.c Richard Henderson
2023-04-26 13:18   ` Philippe Mathieu-Daudé
2023-04-24  5:40 ` [PATCH v3 35/57] tcg: Replace REG_P with arg_loc_reg_p Richard Henderson
2023-04-24  5:40 ` [PATCH v3 36/57] tcg: Introduce arg_slot_stk_ofs Richard Henderson
2023-04-24  5:40 ` [PATCH v3 37/57] tcg: Widen helper_*_st[bw]_mmu val arguments Richard Henderson
2023-04-24  5:40 ` [PATCH v3 38/57] tcg: Add routines for calling slow-path helpers Richard Henderson
2023-04-24  5:40 ` [PATCH v3 39/57] tcg/i386: Convert tcg_out_qemu_ld_slow_path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 40/57] tcg/i386: Convert tcg_out_qemu_st_slow_path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 41/57] tcg/aarch64: Convert tcg_out_qemu_{ld,st}_slow_path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 42/57] tcg/arm: " Richard Henderson
2023-04-24  5:40 ` [PATCH v3 43/57] tcg/loongarch64: Convert tcg_out_qemu_{ld, st}_slow_path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 44/57] tcg/mips: Convert tcg_out_qemu_{ld,st}_slow_path Richard Henderson
2023-04-24  5:40 ` [PATCH v3 45/57] tcg/ppc: " Richard Henderson
2023-04-24  5:40 ` [PATCH v3 46/57] tcg/riscv: " Richard Henderson
2023-04-24  5:40 ` [PATCH v3 47/57] tcg/s390x: " Richard Henderson
2023-04-24  5:40 ` [PATCH v3 48/57] tcg/loongarch64: Simplify constraints on qemu_ld/st Richard Henderson
2023-04-24  5:40 ` [PATCH v3 49/57] tcg/mips: Remove MO_BSWAP handling Richard Henderson
2023-04-24  5:40 ` [PATCH v3 50/57] tcg/mips: Reorg tlb load within prepare_host_addr Richard Henderson
2023-04-24  5:40 ` [PATCH v3 51/57] tcg/mips: Simplify constraints on qemu_ld/st Richard Henderson
2023-04-24  5:41 ` [PATCH v3 52/57] tcg/ppc: Reorg tcg_out_tlb_read Richard Henderson
2023-04-24  5:41 ` [PATCH v3 53/57] tcg/ppc: Adjust constraints on qemu_ld/st Richard Henderson
2023-04-24  5:41 ` [PATCH v3 54/57] tcg/ppc: Remove unused constraints A, B, C, D Richard Henderson
2023-04-29 12:29   ` Philippe Mathieu-Daudé
2023-05-01  7:23     ` Richard Henderson
2023-04-24  5:41 ` [PATCH v3 55/57] tcg/riscv: Simplify constraints on qemu_ld/st Richard Henderson
2023-04-24  5:41 ` [PATCH v3 56/57] tcg/s390x: Use ALGFR in constructing softmmu host address Richard Henderson
2023-04-24  5:41 ` [PATCH v3 57/57] tcg/s390x: Simplify constraints on qemu_ld/st 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).