mbox series

[00/23] TCI fixes and cleanups

Message ID 20210128082331.196801-1-richard.henderson@linaro.org
Headers show
Series TCI fixes and cleanups | expand

Message

Richard Henderson Jan. 28, 2021, 8:23 a.m. UTC
The first patch I believe is queued by Paolo, but is not yet
upstream; copied here for convenience.  Then, fill in all of
the TODO blanks in TCI.

The tci_write_reg* functions are redundant with tcg_write_reg.
Just pass in the properly truncated result to begin.  In the
cases of the loads, we've automatically done that with the
type of the indirection.  For all of the other arithmetic,
we don't actually have to do anything -- the value is either
right, or the high bits are undefined.  And in fact will
currently be ignored by the extension on read.


r~


Richard Henderson (21):
  configure: Fix --enable-tcg-interpreter
  tcg: Manage splitwx in tc_ptr_to_region_tree by hand
  exec: Make tci_tb_ptr thread-local
  tcg/tci: Inline tci_write_reg32s into the only caller
  tcg/tci: Inline tci_write_reg8 into its callers
  tcg/tci: Inline tci_write_reg16 into the only caller
  tcg/tci: Inline tci_write_reg32 into all callers
  tcg/tci: Inline tci_write_reg64 into 64-bit callers
  tcg/tci: Merge INDEX_op_ld8u_{i32,i64}
  tcg/tci: Merge INDEX_op_ld8s_{i32,i64}
  tcg/tci: Merge INDEX_op_ld16u_{i32,i64}
  tcg/tci: Merge INDEX_op_ld16s_{i32,i64}
  tcg/tci: Merge INDEX_op_{ld_i32,ld32u_i64}
  tcg/tci: Merge INDEX_op_st8_{i32,i64}
  tcg/tci: Merge INDEX_op_st16_{i32,i64}
  tcg/tci: Move stack bounds check to compile-time
  tcg/tci: Merge INDEX_op_{st_i32,st32_i64}
  tcg/tci: Use g_assert_not_reached
  tcg/tci: Remove dead code for TCG_TARGET_HAS_div2_*
  tcg/tci: Implement 64-bit division
  tcg/tci: Remove TODO as unused

Stefan Weil (2):
  tcg/tci: Implement INDEX_op_ld16s_i32
  tcg/tci: Implement INDEX_op_ld8s_i64

 configure                |   5 +-
 include/exec/exec-all.h  |   2 +-
 tcg/tci/tcg-target.h     |   4 +-
 tcg/tcg-common.c         |   2 +-
 tcg/tcg.c                |  23 +++-
 tcg/tci.c                | 283 +++++++++++++++------------------------
 tcg/tci/tcg-target.c.inc |  41 +++---
 7 files changed, 154 insertions(+), 206 deletions(-)

-- 
2.25.1

Comments

Alex Bennée Jan. 28, 2021, 3:38 p.m. UTC | #1
Richard Henderson <richard.henderson@linaro.org> writes:

> The first patch I believe is queued by Paolo, but is not yet

> upstream; copied here for convenience.  Then, fill in all of

> the TODO blanks in TCI.

>

> The tci_write_reg* functions are redundant with tcg_write_reg.

> Just pass in the properly truncated result to begin.  In the

> cases of the loads, we've automatically done that with the

> type of the indirection.  For all of the other arithmetic,

> we don't actually have to do anything -- the value is either

> right, or the high bits are undefined.  And in fact will

> currently be ignored by the extension on read.


FWIW aside from the regression with 2/23 I've been testing this in TCI
mode all day on hackbox. So far ffmpeg has encoded a whole 153 frames of
video which is the furthest it has ever got in one of my tests ;-)

So for the TCI part itself:

Tested-by: Alex Bennée <alex.bennee@linaro.org>



>

>

> r~

>

>

> Richard Henderson (21):

>   configure: Fix --enable-tcg-interpreter

>   tcg: Manage splitwx in tc_ptr_to_region_tree by hand

>   exec: Make tci_tb_ptr thread-local

>   tcg/tci: Inline tci_write_reg32s into the only caller

>   tcg/tci: Inline tci_write_reg8 into its callers

>   tcg/tci: Inline tci_write_reg16 into the only caller

>   tcg/tci: Inline tci_write_reg32 into all callers

>   tcg/tci: Inline tci_write_reg64 into 64-bit callers

>   tcg/tci: Merge INDEX_op_ld8u_{i32,i64}

>   tcg/tci: Merge INDEX_op_ld8s_{i32,i64}

>   tcg/tci: Merge INDEX_op_ld16u_{i32,i64}

>   tcg/tci: Merge INDEX_op_ld16s_{i32,i64}

>   tcg/tci: Merge INDEX_op_{ld_i32,ld32u_i64}

>   tcg/tci: Merge INDEX_op_st8_{i32,i64}

>   tcg/tci: Merge INDEX_op_st16_{i32,i64}

>   tcg/tci: Move stack bounds check to compile-time

>   tcg/tci: Merge INDEX_op_{st_i32,st32_i64}

>   tcg/tci: Use g_assert_not_reached

>   tcg/tci: Remove dead code for TCG_TARGET_HAS_div2_*

>   tcg/tci: Implement 64-bit division

>   tcg/tci: Remove TODO as unused

>

> Stefan Weil (2):

>   tcg/tci: Implement INDEX_op_ld16s_i32

>   tcg/tci: Implement INDEX_op_ld8s_i64

>

>  configure                |   5 +-

>  include/exec/exec-all.h  |   2 +-

>  tcg/tci/tcg-target.h     |   4 +-

>  tcg/tcg-common.c         |   2 +-

>  tcg/tcg.c                |  23 +++-

>  tcg/tci.c                | 283 +++++++++++++++------------------------

>  tcg/tci/tcg-target.c.inc |  41 +++---

>  7 files changed, 154 insertions(+), 206 deletions(-)



-- 
Alex Bennée
Alex Bennée Jan. 28, 2021, 4:39 p.m. UTC | #2
Richard Henderson <richard.henderson@linaro.org> writes:

> The first patch I believe is queued by Paolo, but is not yet

> upstream; copied here for convenience.  Then, fill in all of

> the TODO blanks in TCI.

>

> The tci_write_reg* functions are redundant with tcg_write_reg.

> Just pass in the properly truncated result to begin.  In the

> cases of the loads, we've automatically done that with the

> type of the indirection.  For all of the other arithmetic,

> we don't actually have to do anything -- the value is either

> right, or the high bits are undefined.  And in fact will

> currently be ignored by the extension on read.


Hmm it also failed CI pretty hard:

  https://gitlab.com/stsquad/qemu/-/pipelines/248074046/failures

-- 
Alex Bennée