qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-ppc] [RFT/RFH PATCH 00/16] PPC speedup patches for TCG


From: Paolo Bonzini
Subject: [Qemu-ppc] [RFT/RFH PATCH 00/16] PPC speedup patches for TCG
Date: Thu, 28 Aug 2014 19:14:56 +0200

Hi everyone,

these patches provide a speedup around 20% when running PPC softmmu
emulation on x86 machines (10% for user-mode emulation).  There are
actually two separate speedups here:

* avoiding TLB flushing on every kernel<->user transition (patches 1-2)

* rewriting CR handling to use 32 1-bit registers instead of 8
  4-bit registers (patches 3-16)

They must not be too shoddy; they boot a Linux guest fine. :) And the
speedup is very interesting of course.  The three problems with it are:

* I don't have a good testsuite.  So floating-point, decimal and SPE
  are mostly untested

* I don't have much time to work on them (they are about a year old and
  I have just rebased them).

* Patch 15 is a monster and hard to review, but I have no idea how to
  split it.

Please take a look and if you are interested help in any way you can. :)

I think patches 1-13 can be separated, as the two optimizations are
independent and patches 3-13 are mostly bug fixes and cleanups.

Paolo

Paolo Bonzini (17):
  ppc: do not look at the MMU index
  ppc: avoid excessive TLB flushing
  ppc: fix monitor access to CR
  ppc: use ARRAY_SIZE in gdbstub.c
  ppc: use CRF_* in fpu_helper.c
  ppc: use CRF_* in int_helper.c
  ppc: fix result of DLMZB when no zero bytes are found
  ppc: introduce helpers for mfocrf/mtocrf
  ppc: reorganize gen_compute_fprf
  ppc: introduce gen_op_mfcr/gen_op_mtcr
  ppc: rename gen_set_cr6_from_fpscr
  ppc: use movcond for isel
  ppc: compute mask from BI using right shift
  ppc: introduce ppc_get_crf and ppc_set_crf
  ppc: store CR registers in 32 1-bit registers
  ppc: inline ppc_get_crf/ppc_set_crf when clearer
  ppc: dump all 32 CR bits

 cputlb.c                    |  19 ++
 hw/ppc/spapr_hcall.c        |   6 +-
 include/exec/exec-all.h     |   5 +
 linux-user/elfload.c        |   4 +-
 linux-user/main.c           |   9 +-
 linux-user/signal.c         |   8 +-
 monitor.c                   |   2 +-
 target-ppc/cpu.h            |  43 +++-
 target-ppc/excp_helper.c    |   8 +-
 target-ppc/fpu_helper.c     |  73 +++----
 target-ppc/gdbstub.c        |   8 +-
 target-ppc/helper.h         |   9 +-
 target-ppc/helper_regs.h    |  52 +++--
 target-ppc/int_helper.c     |  64 ++++--
 target-ppc/kvm.c            |  10 +-
 target-ppc/machine.c        |   9 +
 target-ppc/translate.c      | 470 ++++++++++++++++++++++----------------------
 target-ppc/translate_init.c |   5 +
 18 files changed, 461 insertions(+), 343 deletions(-)

-- 
1.8.3.1




reply via email to

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