[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
- [Qemu-ppc] [RFT/RFH PATCH 00/16] PPC speedup patches for TCG,
Paolo Bonzini <=
- [Qemu-ppc] [PATCH 01/17] ppc: do not look at the MMU index, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 02/17] ppc: avoid excessive TLB flushing, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 04/17] ppc: use ARRAY_SIZE in gdbstub.c, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 03/17] ppc: fix monitor access to CR, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 05/17] ppc: use CRF_* in fpu_helper.c, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 06/17] ppc: use CRF_* in int_helper.c, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 07/17] ppc: fix result of DLMZB when no zero bytes are found, Paolo Bonzini, 2014/08/28
- [Qemu-ppc] [PATCH 08/17] ppc: introduce helpers for mfocrf/mtocrf, Paolo Bonzini, 2014/08/28