[PULL v2 00/39] tcg patch queue

Richard Henderson posted 39 patches 9 months, 3 weeks ago
Only 1 patches received!
There is a newer version of this series
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     | 166 +++++++++++---
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, 1379 insertions(+), 595 deletions(-)
[PULL v2 00/39] tcg patch queue
Posted by Richard Henderson 9 months, 3 weeks ago
v2: Fix rebase error in patch 38 (tcg/s390x: Support TCG_COND_TST{EQ,NE}).


r~


The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:

  Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)

are available in the Git repository at:

  https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20240205-2

for you to fetch changes up to 23c5692abc3917151dee36c00d751cf5bc46ef19:

  tcg/tci: Support TCG_COND_TST{EQ,NE} (2024-02-05 22:45:41 +0000)

----------------------------------------------------------------
tcg: Introduce TCG_COND_TST{EQ,NE}
target/alpha: Use TCG_COND_TST{EQ,NE}
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

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

Philippe Mathieu-Daudé (1):
      tcg/aarch64: Massage tcg_out_brcond()

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: Split out tcg_out_cmp()
      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     | 166 +++++++++++---
 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, 1379 insertions(+), 595 deletions(-)

Re: [PULL v2 00/39] tcg patch queue
Posted by Peter Maydell 9 months, 3 weeks ago
On Tue, 6 Feb 2024 at 03:22, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> v2: Fix rebase error in patch 38 (tcg/s390x: Support TCG_COND_TST{EQ,NE}).
>
>
> r~
>
>
> The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:
>
>   Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20240205-2
>
> for you to fetch changes up to 23c5692abc3917151dee36c00d751cf5bc46ef19:
>
>   tcg/tci: Support TCG_COND_TST{EQ,NE} (2024-02-05 22:45:41 +0000)
>
> ----------------------------------------------------------------
> tcg: Introduce TCG_COND_TST{EQ,NE}
> target/alpha: Use TCG_COND_TST{EQ,NE}
> 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
>


Applied, thanks.

Please update the changelog at https://wiki.qemu.org/ChangeLog/9.0
for any user-visible changes.

-- PMM
Re: [PULL v2 00/39] tcg patch queue
Posted by Peter Maydell 9 months, 3 weeks ago
On Tue, 6 Feb 2024 at 03:22, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> v2: Fix rebase error in patch 38 (tcg/s390x: Support TCG_COND_TST{EQ,NE}).
>
>
> r~
>
>
> The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:
>
>   Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)
>
> are available in the Git repository at:
>
>   https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20240205-2
>
> for you to fetch changes up to 23c5692abc3917151dee36c00d751cf5bc46ef19:
>
>   tcg/tci: Support TCG_COND_TST{EQ,NE} (2024-02-05 22:45:41 +0000)
>
> ----------------------------------------------------------------
> tcg: Introduce TCG_COND_TST{EQ,NE}
> target/alpha: Use TCG_COND_TST{EQ,NE}
> 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

This really doesn't want to pass the ubuntu-20.04-s390x-all job:

https://gitlab.com/qemu-project/qemu/-/jobs/6109442678
https://gitlab.com/qemu-project/qemu/-/jobs/6108249863
https://gitlab.com/qemu-project/qemu/-/jobs/6106928534
https://gitlab.com/qemu-project/qemu/-/jobs/6105718495

Now, this has definitely been a flaky job recently, so maybe it's
not this pullreq's fault.

This is a passing job from the last successful merge:
https://gitlab.com/qemu-project/qemu/-/jobs/6089342252
That took 24 minutes to run, and all the failed jobs above
took 70 minutes plus.

TBH I think there is something weird with the runner. Looking
at the timestamps in the log, it seems like the passing job
completed its compile step in about 14 minutes, whereas one
of the failing jobs took about 39 minutes. So the entire
run of the job slowed down by more than 2.5x, which is enough
to put it into the range where either the whole job or
individual tests time out.

thuth: any idea why that might happen? (I look in on the
machine from time to time and it doesn't seem to be doing
anything it shouldn't that would be eating CPU.)

Christian: this is on the s390x machine we have. Does the
VM setup for that share IO or CPU with other VMs somehow?
Is there some reason why it might have very variable
performance over time?

thanks
-- PMM
Re: [PULL v2 00/39] tcg patch queue
Posted by Christian Borntraeger 9 months, 3 weeks ago

Am 06.02.24 um 22:24 schrieb Peter Maydell:
[..]
> Christian: this is on the s390x machine we have. Does the
> VM setup for that share IO or CPU with other VMs somehow?

Yes it does, this is a shared system. I will talk to the team if there is anything that we can do about this.
Re: [PULL v2 00/39] tcg patch queue
Posted by Peter Maydell 9 months, 3 weeks ago
On Tue, 6 Feb 2024 at 21:24, Peter Maydell <peter.maydell@linaro.org> wrote:
>
> On Tue, 6 Feb 2024 at 03:22, Richard Henderson
> <richard.henderson@linaro.org> wrote:
> >
> > v2: Fix rebase error in patch 38 (tcg/s390x: Support TCG_COND_TST{EQ,NE}).
> >
> >
> > r~
> >
> >
> > The following changes since commit 39a6e4f87e7b75a45b08d6dc8b8b7c2954c87440:
> >
> >   Merge tag 'pull-qapi-2024-02-03' of https://repo.or.cz/qemu/armbru into staging (2024-02-03 13:31:58 +0000)
> >
> > are available in the Git repository at:
> >
> >   https://gitlab.com/rth7680/qemu.git tags/pull-tcg-20240205-2
> >
> > for you to fetch changes up to 23c5692abc3917151dee36c00d751cf5bc46ef19:
> >
> >   tcg/tci: Support TCG_COND_TST{EQ,NE} (2024-02-05 22:45:41 +0000)
> >
> > ----------------------------------------------------------------
> > tcg: Introduce TCG_COND_TST{EQ,NE}
> > target/alpha: Use TCG_COND_TST{EQ,NE}
> > 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
>
> This really doesn't want to pass the ubuntu-20.04-s390x-all job:
>
> https://gitlab.com/qemu-project/qemu/-/jobs/6109442678
> https://gitlab.com/qemu-project/qemu/-/jobs/6108249863
> https://gitlab.com/qemu-project/qemu/-/jobs/6106928534
> https://gitlab.com/qemu-project/qemu/-/jobs/6105718495
>
> Now, this has definitely been a flaky job recently, so maybe it's
> not this pullreq's fault.
>
> This is a passing job from the last successful merge:
> https://gitlab.com/qemu-project/qemu/-/jobs/6089342252
> That took 24 minutes to run, and all the failed jobs above
> took 70 minutes plus.

Ruling out anything about this particular merge attempt:

This is a passing job from a recent succesful merge:
 https://gitlab.com/qemu-project/qemu/-/jobs/6089089816
That took 37 minutes to run (21 mins in configure-n-compile).

This is a failing job for the same commit:
  https://gitlab.com/qemu-project/qemu/-/jobs/6086439717
That took 58 minutes (26 mins in configure-n-compile).

So there's a lot of between run variation, though in that
case it was not so much as in some of these examples.

-- PMM