qemu-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]