[PATCH v3 00/38] tcg: Introduce TCG_COND_TST{EQ,NE}

Richard Henderson posted 38 patches 10 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20240110224408.10444-1-richard.henderson@linaro.org
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, Laurent Vivier <laurent@vivier.eu>, David Hildenbrand <david@redhat.com>, Ilya Leoshkevich <iii@linux.ibm.com>, Thomas Huth <thuth@redhat.com>, Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>, Artyom Tarasenko <atar4qemu@gmail.com>, WANG Xuerui <git@xen0n.name>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Aurelien Jarno <aurelien@aurel32.net>, Huacai Chen <chenhuacai@kernel.org>, Jiaxun Yang <jiaxun.yang@flygoat.com>, Aleksandar Rikalo <aleksandar.rikalo@syrmia.com>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <Alistair.Francis@wdc.com>, Stefan Weil <sw@weilnetz.de>
docs/devel/tcg-ops.rst           |   2 +
include/tcg/tcg-cond.h           |  74 +++--
tcg/aarch64/tcg-target-con-set.h |   5 +-
tcg/aarch64/tcg-target-con-str.h |   1 +
tcg/aarch64/tcg-target.h         |   2 +
tcg/arm/tcg-target.h             |   2 +
tcg/i386/tcg-target-con-set.h    |   6 +-
tcg/i386/tcg-target-con-str.h    |   1 +
tcg/i386/tcg-target.h            |   2 +
tcg/loongarch64/tcg-target.h     |   2 +
tcg/mips/tcg-target.h            |   2 +
tcg/ppc/tcg-target-con-set.h     |   5 +-
tcg/ppc/tcg-target-con-str.h     |   1 +
tcg/ppc/tcg-target.h             |   2 +
tcg/riscv/tcg-target.h           |   2 +
tcg/s390x/tcg-target-con-set.h   |   8 +-
tcg/s390x/tcg-target-con-str.h   |   3 +-
tcg/s390x/tcg-target.h           |   2 +
tcg/sparc64/tcg-target.h         |   2 +
tcg/tcg-internal.h               |   2 +
tcg/tci/tcg-target.h             |   2 +
target/alpha/translate.c         |  94 +++---
target/m68k/translate.c          |  74 +++--
target/s390x/tcg/translate.c     | 100 +++----
target/sparc/translate.c         |   4 +-
tcg/optimize.c                   | 474 +++++++++++++++++++++++--------
tcg/tcg.c                        |  40 ++-
tcg/tci.c                        |  14 +
tcg/aarch64/tcg-target.c.inc     | 165 ++++++++---
tcg/arm/tcg-target.c.inc         |  62 ++--
tcg/i386/tcg-target.c.inc        | 201 +++++++++----
tcg/loongarch64/tcg-target.c.inc |   3 +-
tcg/mips/tcg-target.c.inc        |   3 +-
tcg/ppc/tcg-target.c.inc         | 294 ++++++++++++++-----
tcg/riscv/tcg-target.c.inc       |   3 +-
tcg/s390x/tcg-target.c.inc       | 246 +++++++++++-----
tcg/sparc64/tcg-target.c.inc     |  65 +++--
tcg/tci/tcg-target.c.inc         |   3 +-
38 files changed, 1378 insertions(+), 595 deletions(-)
[PATCH v3 00/38] tcg: Introduce TCG_COND_TST{EQ,NE}
Posted by Richard Henderson 10 months, 1 week ago
Expose a pair of comparison operators that map to the "test"
comparison that is available on many architectures.

Changes for v3:
  * Make support for TCG_COND_TST* optional (paolo)
  * Drop riscv, loongarch64 and (unposted) mips backend changes.
  * Incorporate Paolo's tcg/i386 TEST improvements
  * Convert some target/s390x cases for even more testing.
  * Probably some bug fixes in there too...


r~


Paolo Bonzini (1):
  tcg/i386: Use TEST r,r to test 8/16/32 bits

Richard Henderson (37):
  tcg: Introduce TCG_COND_TST{EQ,NE}
  tcg: Introduce TCG_TARGET_HAS_tst
  tcg/optimize: Split out arg_is_const_val
  tcg/optimize: Split out do_constant_folding_cond1
  tcg/optimize: Do swap_commutative2 in do_constant_folding_cond2
  tcg/optimize: Handle TCG_COND_TST{EQ,NE}
  tcg/optimize: Lower TCG_COND_TST{EQ,NE} if unsupported
  target/alpha: Pass immediate value to gen_bcond_internal()
  target/alpha: Use TCG_COND_TST{EQ,NE} for BLB{C,S}
  target/alpha: Use TCG_COND_TST{EQ,NE} for CMOVLB{C,S}
  target/alpha: Use TCG_COND_TSTNE for gen_fold_mzero
  target/m68k: Use TCG_COND_TST{EQ,NE} in gen_fcc_cond
  target/sparc: Use TCG_COND_TSTEQ in gen_op_mulscc
  target/s390x: Use TCG_COND_TSTNE for CC_OP_{TM,ICM}
  target/s390x: Improve general case of disas_jcc
  tcg: Add TCGConst argument to tcg_target_const_match
  tcg/aarch64: Support TCG_COND_TST{EQ,NE}
  tcg/aarch64: Generate TBZ, TBNZ
  tcg/aarch64: Generate CBNZ for TSTNE of UINT32_MAX
  tcg/arm: Factor tcg_out_cmp() out
  tcg/arm: Support TCG_COND_TST{EQ,NE}
  tcg/i386: Pass x86 condition codes to tcg_out_cmov
  tcg/i386: Move tcg_cond_to_jcc[] into tcg_out_cmp
  tcg/i386: Support TCG_COND_TST{EQ,NE}
  tcg/i386: Improve TSTNE/TESTEQ vs powers of two
  tcg/sparc64: Hoist read of tcg_cond_to_rcond
  tcg/sparc64: Pass TCGCond to tcg_out_cmp
  tcg/sparc64: Support TCG_COND_TST{EQ,NE}
  tcg/ppc: Sink tcg_to_bc usage into tcg_out_bc
  tcg/ppc: Use cr0 in tcg_to_bc and tcg_to_isel
  tcg/ppc: Tidy up tcg_target_const_match
  tcg/ppc: Add TCG_CT_CONST_CMP
  tcg/ppc: Support TCG_COND_TST{EQ,NE}
  tcg/s390x: Split constraint A into J+U
  tcg/s390x: Add TCG_CT_CONST_CMP
  tcg/s390x: Support TCG_COND_TST{EQ,NE}
  tcg/tci: Support TCG_COND_TST{EQ,NE}

 docs/devel/tcg-ops.rst           |   2 +
 include/tcg/tcg-cond.h           |  74 +++--
 tcg/aarch64/tcg-target-con-set.h |   5 +-
 tcg/aarch64/tcg-target-con-str.h |   1 +
 tcg/aarch64/tcg-target.h         |   2 +
 tcg/arm/tcg-target.h             |   2 +
 tcg/i386/tcg-target-con-set.h    |   6 +-
 tcg/i386/tcg-target-con-str.h    |   1 +
 tcg/i386/tcg-target.h            |   2 +
 tcg/loongarch64/tcg-target.h     |   2 +
 tcg/mips/tcg-target.h            |   2 +
 tcg/ppc/tcg-target-con-set.h     |   5 +-
 tcg/ppc/tcg-target-con-str.h     |   1 +
 tcg/ppc/tcg-target.h             |   2 +
 tcg/riscv/tcg-target.h           |   2 +
 tcg/s390x/tcg-target-con-set.h   |   8 +-
 tcg/s390x/tcg-target-con-str.h   |   3 +-
 tcg/s390x/tcg-target.h           |   2 +
 tcg/sparc64/tcg-target.h         |   2 +
 tcg/tcg-internal.h               |   2 +
 tcg/tci/tcg-target.h             |   2 +
 target/alpha/translate.c         |  94 +++---
 target/m68k/translate.c          |  74 +++--
 target/s390x/tcg/translate.c     | 100 +++----
 target/sparc/translate.c         |   4 +-
 tcg/optimize.c                   | 474 +++++++++++++++++++++++--------
 tcg/tcg.c                        |  40 ++-
 tcg/tci.c                        |  14 +
 tcg/aarch64/tcg-target.c.inc     | 165 ++++++++---
 tcg/arm/tcg-target.c.inc         |  62 ++--
 tcg/i386/tcg-target.c.inc        | 201 +++++++++----
 tcg/loongarch64/tcg-target.c.inc |   3 +-
 tcg/mips/tcg-target.c.inc        |   3 +-
 tcg/ppc/tcg-target.c.inc         | 294 ++++++++++++++-----
 tcg/riscv/tcg-target.c.inc       |   3 +-
 tcg/s390x/tcg-target.c.inc       | 246 +++++++++++-----
 tcg/sparc64/tcg-target.c.inc     |  65 +++--
 tcg/tci/tcg-target.c.inc         |   3 +-
 38 files changed, 1378 insertions(+), 595 deletions(-)

-- 
2.34.1