[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/10] tcg: call and move cleanups
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH 00/10] tcg: call and move cleanups |
Date: |
Tue, 29 Apr 2014 09:52:03 -0700 |
There are several goals at play here:
(1) We never actually use calls with a truly dynamic target. Which,
honestly, is a good thing, because on select hosts means we can
always use a direct branch.
Rather than spend effort splitting and then recombining call
targets, why not simply leave the constant address inside the
call opcode so that we're assured of finding it? This means
fewer opcodes and less processing.
(2) The tcg_out_op subroutine is called exactly twice, once for calls
and once for "everything else". Reducing that to one call aids the
compiler in optimization immediately. This also aids further cleanups
to the "everthing else" interface.
Thus the creation of one more specific subroutine that the backend
must provide.
(3) Reducing the amount of boilerplate that each backend requires.
Especially the entries in the op_defs array, when they /must/
contain specific values.
This patch set is on top of the tcg_insn_unit patch set that
has already been posted.
r~
Richard Henderson (10):
tcg-i386: Rename tcg_out_calli to tcg_out_call
tcg-s390: Rename tgen_calli to tcg_out_call
tcg-ppc: Split out tcg_out_call
tcg-ppc64: Rename tcg_out_calli to tcg_out_call
tcg-sparc: Create tcg_out_call
tcg-mips: Split out tcg_out_call
tci: Create tcg_out_call
tcg: Make call address a constant parameter
tcg: Use tcg_target_available_regs in tcg_reg_alloc_mov
tcg: Remove unreachable code in tcg_out_op and op_defs
tcg/aarch64/tcg-target.c | 22 +------
tcg/arm/tcg-target.c | 32 +---------
tcg/i386/tcg-target.c | 28 +++------
tcg/ia64/tcg-target.c | 40 ++-----------
tcg/mips/tcg-target.c | 29 ++++------
tcg/optimize.c | 75 +++++++++++-------------
tcg/ppc/tcg-target.c | 39 ++++---------
tcg/ppc64/tcg-target.c | 44 +++-----------
tcg/s390/tcg-target.c | 41 +++----------
tcg/sparc/tcg-target.c | 37 +++++-------
tcg/tcg-op.h | 16 +----
tcg/tcg-opc.h | 10 ++--
tcg/tcg.c | 148 ++++++++++++++---------------------------------
tcg/tcg.h | 2 +-
tcg/tci/tcg-target.c | 31 ++++------
15 files changed, 166 insertions(+), 428 deletions(-)
--
1.9.0
- [Qemu-devel] [PATCH 00/10] tcg: call and move cleanups,
Richard Henderson <=
- [Qemu-devel] [PATCH 01/10] tcg-i386: Rename tcg_out_calli to tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 02/10] tcg-s390: Rename tgen_calli to tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 03/10] tcg-ppc: Split out tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 04/10] tcg-ppc64: Rename tcg_out_calli to tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 06/10] tcg-mips: Split out tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 05/10] tcg-sparc: Create tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 08/10] tcg: Make call address a constant parameter, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 07/10] tci: Create tcg_out_call, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 09/10] tcg: Use tcg_target_available_regs in tcg_reg_alloc_mov, Richard Henderson, 2014/04/29
- [Qemu-devel] [PATCH 10/10] tcg: Remove unreachable code in tcg_out_op and op_defs, Richard Henderson, 2014/04/29