qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/20] target/arm: Start conversion of A64 decoder to decodetree
@ 2023-05-12 14:40 Peter Maydell
  2023-05-12 14:40 ` [PATCH 01/20] target/arm: Split out disas_a64_legacy Peter Maydell
                   ` (19 more replies)
  0 siblings, 20 replies; 32+ messages in thread
From: Peter Maydell @ 2023-05-12 14:40 UTC (permalink / raw)
  To: qemu-arm, qemu-devel; +Cc: Richard Henderson

The A64 decoder is still an old-school hand-written one.
It's not too badly structured as these things go, but it's
still been noticeably harder to both add new instructions to
and to review patches for than a decodetree decoder. (This
is particularly clear when you have to review a patch that
adds an insn both to A32 and A64 -- one half of the patch
is a lot easier to understand than the other.)

I was looking at FEAT_MOPS, which is in the A64 load/store
area of the instruction set, and I really didn't fancy trying
to fit it into the old decoder. The instruction set is not
standing still, so we're going to have to keep adding
instructions for the foreseeable future. We should make
our lives easier by biting the bullet and converting this
to decodetree.

Past experience is that a decodetree conversion works out
to a lot of patches, so this series is just the first part,
which converts data-processing-immediate and branch insns.
Most of the first half is some older work from Richard Henderson,
which I rebased and tweaked a little. I definitely want to
convert the whole of the integer decode, but I might leave
the FP/SIMD insns for later.

thanks
-- PMM

Peter Maydell (11):
  target/arm: Create decodetree skeleton for A64
  target/arm: Pull calls to disas_sve() and disas_sme() out of legacy
    decoder
  target/arm: Convert Extract instructions to decodetree
  target/arm: Convert unconditional branch immediate to decodetree
  target/arm: Convert CBZ, CBNZ to decodetree
  target/arm: Convert TBZ, TBNZ to decodetree
  target/arm: Convert conditional branch insns to decodetree
  target/arm: Convert BR, BLR, RET to decodetree
  target/arm: Convert BRA[AB]Z, BLR[AB]Z, RETA[AB] to decodetree
  target/arm: Convert BRAA, BRAB, BLRAA, BLRAB to decodetree
  target/arm: Convert ERET, ERETAA, ERETAB to decodetree

Richard Henderson (9):
  target/arm: Split out disas_a64_legacy
  target/arm: Convert PC-rel addressing to decodetree
  target/arm: Split gen_add_CC and gen_sub_CC
  target/arm: Convert Add/subtract (immediate) to decodetree
  target/arm: Convert Add/subtract (immediate with tags) to decodetree
  target/arm: Replace bitmask64 with MAKE_64BIT_MASK
  target/arm: Convert Logical (immediate) to decodetree
  target/arm: Convert Move wide (immediate) to decodetree
  target/arm: Convert Bitfield to decodetree

 target/arm/tcg/translate.h     |    5 +
 target/arm/tcg/a64.decode      |  156 ++++
 target/arm/tcg/translate-a64.c | 1318 ++++++++++++++------------------
 target/arm/tcg/meson.build     |    1 +
 4 files changed, 729 insertions(+), 751 deletions(-)
 create mode 100644 target/arm/tcg/a64.decode

-- 
2.34.1



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

end of thread, other threads:[~2023-05-13 11:39 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-12 14:40 [PATCH 00/20] target/arm: Start conversion of A64 decoder to decodetree Peter Maydell
2023-05-12 14:40 ` [PATCH 01/20] target/arm: Split out disas_a64_legacy Peter Maydell
2023-05-12 14:40 ` [PATCH 02/20] target/arm: Create decodetree skeleton for A64 Peter Maydell
2023-05-13  7:12   ` Richard Henderson
2023-05-12 14:40 ` [PATCH 03/20] target/arm: Pull calls to disas_sve() and disas_sme() out of legacy decoder Peter Maydell
2023-05-13  7:13   ` Richard Henderson
2023-05-12 14:40 ` [PATCH 04/20] target/arm: Convert PC-rel addressing to decodetree Peter Maydell
2023-05-12 14:40 ` [PATCH 05/20] target/arm: Split gen_add_CC and gen_sub_CC Peter Maydell
2023-05-12 14:40 ` [PATCH 06/20] target/arm: Convert Add/subtract (immediate) to decodetree Peter Maydell
2023-05-12 14:40 ` [PATCH 07/20] target/arm: Convert Add/subtract (immediate with tags) " Peter Maydell
2023-05-12 14:40 ` [PATCH 08/20] target/arm: Replace bitmask64 with MAKE_64BIT_MASK Peter Maydell
2023-05-12 14:40 ` [PATCH 09/20] target/arm: Convert Logical (immediate) to decodetree Peter Maydell
2023-05-12 14:40 ` [PATCH 10/20] target/arm: Convert Move wide " Peter Maydell
2023-05-12 14:40 ` [PATCH 11/20] target/arm: Convert Bitfield " Peter Maydell
2023-05-12 14:40 ` [PATCH 12/20] target/arm: Convert Extract instructions " Peter Maydell
2023-05-13  7:18   ` Richard Henderson
2023-05-12 14:40 ` [PATCH 13/20] target/arm: Convert unconditional branch immediate " Peter Maydell
2023-05-13  7:19   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 14/20] target/arm: Convert CBZ, CBNZ " Peter Maydell
2023-05-13  7:26   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 15/20] target/arm: Convert TBZ, TBNZ " Peter Maydell
2023-05-13  7:28   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 16/20] target/arm: Convert conditional branch insns " Peter Maydell
2023-05-13  7:28   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 17/20] target/arm: Convert BR, BLR, RET " Peter Maydell
2023-05-13 11:26   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 18/20] target/arm: Convert BRA[AB]Z, BLR[AB]Z, RETA[AB] " Peter Maydell
2023-05-13 11:32   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 19/20] target/arm: Convert BRAA, BRAB, BLRAA, BLRAB " Peter Maydell
2023-05-13 11:34   ` Richard Henderson
2023-05-12 14:41 ` [PATCH 20/20] target/arm: Convert ERET, ERETAA, ERETAB " Peter Maydell
2023-05-13 11:39   ` 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).