qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/8] Hexagon (target/hexagon) Improve change-of-flow
@ 2022-10-24 23:51 Taylor Simpson
  2022-10-24 23:51 ` [PATCH v2 1/8] Hexagon (target/hexagon) Only use branch_taken when packet has multi cof Taylor Simpson
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: Taylor Simpson @ 2022-10-24 23:51 UTC (permalink / raw)
  To: qemu-devel
  Cc: tsimpson, richard.henderson, philmd, ale, anjo, bcain,
	quic_mathbern

This patch series improves change-of-flow handling.

Currently, we set the PC to a new address before exiting a TB.  The
ultimate goal is to use direct block chaining.  However, several steps
are needed along the way.

1)
When a packet has more than one change-of-flow (COF) instruction, only
the first one taken is considered.  The runtime bookkeeping is only
needed when there is more than one COF instruction in a packet.

2, 3)
Remove PC and next_PC from the runtime state and always use a
translation-time constant.  Note that next_PC is used by call instructions
to set LR and by conditional COF instructions to set the fall-through
address.

4, 5, 6)
Add helper overrides for COF instructions.  In particular, we must
distinguish those that use a PC-relative address for the destination.
These are candidates for direct block chaining later.

7)
Use direct block chaining for packets that have a single PC-relative
COF instruction.  Instead of generating the code while processing the
instruction, we record the effect in DisasContext and generate the code
during gen_end_tb.

8)
Use direct block chaining for tight loops.  We look for TBs that end
with an endloop0 that will branch back to the TB start address.


**** Changes in V2 ****
Simplify test in need_pkt_has_multi_cof
Address feedback from Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
    Rearrange new-value-jump overrides
    Simplify gen_write_new_pc_addr



Taylor Simpson (8):
  Hexagon (target/hexagon) Only use branch_taken when packet has multi
    cof
  Hexagon (target/hexagon) Remove PC from the runtime state
  Hexagon (target/hexagon) Remove next_PC from runtime state
  Hexagon (target/hexagon) Add overrides for direct call instructions
  Hexagon (target/hexagon) Add overrides for compound compare and jump
  Hexagon (target/hexagon) Add overrides for various forms of jump
  Hexagon (target/hexagon) Use direct block chaining for direct
    jump/branch
  Hexagon (target/hexagon) Use direct block chaining for tight loops

 target/hexagon/cpu.h                |  18 +-
 target/hexagon/gen_tcg.h            | 390 ++++++++++++++++++++++++++++
 target/hexagon/insn.h               |   2 +
 target/hexagon/macros.h             |   6 +-
 target/hexagon/translate.h          |   6 +-
 target/hexagon/decode.c             |  15 +-
 target/hexagon/genptr.c             | 260 +++++++++++++++++++
 target/hexagon/op_helper.c          |  28 +-
 target/hexagon/translate.c          | 120 +++++++--
 target/hexagon/gen_helper_funcs.py  |  11 +
 target/hexagon/gen_helper_protos.py |  12 +-
 target/hexagon/gen_tcg_funcs.py     |  11 +
 target/hexagon/hex_common.py        |  29 ++-
 13 files changed, 863 insertions(+), 45 deletions(-)

-- 
2.17.1


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

end of thread, other threads:[~2022-10-24 23:57 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-24 23:51 [PATCH v2 0/8] Hexagon (target/hexagon) Improve change-of-flow Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 1/8] Hexagon (target/hexagon) Only use branch_taken when packet has multi cof Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 2/8] Hexagon (target/hexagon) Remove PC from the runtime state Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 3/8] Hexagon (target/hexagon) Remove next_PC from " Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 4/8] Hexagon (target/hexagon) Add overrides for direct call instructions Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 5/8] Hexagon (target/hexagon) Add overrides for compound compare and jump Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 6/8] Hexagon (target/hexagon) Add overrides for various forms of jump Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 7/8] Hexagon (target/hexagon) Use direct block chaining for direct jump/branch Taylor Simpson
2022-10-24 23:51 ` [PATCH v2 8/8] Hexagon (target/hexagon) Use direct block chaining for tight loops Taylor Simpson

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).