[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 0/8] Linked list for tcg ops
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v3 0/8] Linked list for tcg ops |
Date: |
Tue, 3 Feb 2015 07:35:02 -0800 |
Currently tcg ops are simply placed in a buffer in order. Which is
fine until we want to actually do something with the opcode stream,
such as optimize them. Note the horrible things like call opcodes
needing their argument count both prefixed and postfixed so that we
can iterate across the call either forward or backward.
While I'm changing this, I also move quite a lot of tcg-op.h out of
line. There is very little benefit to having most of them be inline,
since their arguments are extracted from the guest instructions being
translated, and thus their values are not really predictable.
I chose a cutoff of one function call. If a tcg-op.h function consists
of a single function call, inline it, otherwise move it out of line.
This also removes a bit of boilerplate from each target.
I haven't been able to measure a performance difference with this
patch set. I wouldn't really expect any, as the complexity level
remains the same. I simply find the link list significantly more
maintainable.
Changes v2-v3:
* Parameter order bug affecting 32-bit hosts fixed (thanks Peter).
r~
Richard Henderson (8):
tcg: Move some opcode generation functions out of line
tcg: Reduce ifdefs in tcg-op.c
tcg: Move emit of INDEX_op_end into gen_tb_end
tcg: Introduce tcg_op_buf_count and tcg_op_buf_full
tcg: Put opcodes in a linked list
tcg: Remove opcodes instead of noping them out
tcg: Implement insert_op_before
tcg: Remove unused opcodes
Makefile.target | 2 +-
include/exec/gen-icount.h | 22 +-
target-alpha/translate.c | 16 +-
target-arm/translate-a64.c | 10 +-
target-arm/translate.c | 10 +-
target-cris/translate.c | 15 +-
target-i386/translate.c | 11 +-
target-lm32/translate.c | 16 +-
target-m68k/translate.c | 10 +-
target-microblaze/translate.c | 22 +-
target-mips/translate.c | 10 +-
target-moxie/translate.c | 10 +-
target-openrisc/translate.c | 15 +-
target-ppc/translate.c | 11 +-
target-s390x/translate.c | 11 +-
target-sh4/translate.c | 10 +-
target-sparc/translate.c | 10 +-
target-tricore/translate.c | 5 +-
target-unicore32/translate.c | 10 +-
target-xtensa/translate.c | 8 +-
tcg/optimize.c | 307 +++--
tcg/tcg-op.c | 1934 ++++++++++++++++++++++++++++++++
tcg/tcg-op.h | 2487 ++++++-----------------------------------
tcg/tcg-opc.h | 9 -
tcg/tcg.c | 532 +++------
tcg/tcg.h | 72 +-
tci.c | 13 -
27 files changed, 2751 insertions(+), 2837 deletions(-)
create mode 100644 tcg/tcg-op.c
--
2.1.0
- [Qemu-devel] [PATCH v3 0/8] Linked list for tcg ops,
Richard Henderson <=
- [Qemu-devel] [PATCH v3 2/8] tcg: Reduce ifdefs in tcg-op.c, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 4/8] tcg: Introduce tcg_op_buf_count and tcg_op_buf_full, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 3/8] tcg: Move emit of INDEX_op_end into gen_tb_end, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 8/8] tcg: Remove unused opcodes, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 6/8] tcg: Remove opcodes instead of noping them out, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 7/8] tcg: Implement insert_op_before, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 5/8] tcg: Put opcodes in a linked list, Richard Henderson, 2015/02/03
- [Qemu-devel] [PATCH v3 1/8] tcg: Move some opcode generation functions out of line, Richard Henderson, 2015/02/03