qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH for-2.5 00/10] tcg: improve optimizer
@ 2015-07-24 16:30 Aurelien Jarno
  2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 01/10] tcg/optimize: optimize temps tracking Aurelien Jarno
                   ` (9 more replies)
  0 siblings, 10 replies; 30+ messages in thread
From: Aurelien Jarno @ 2015-07-24 16:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: Aurelien Jarno, Richard Henderson

This patchset improves the optimizer in 3 different ways:
 - by optimizing temp tracking using a bit array
 - by allowing constants to have copy
 - by differentiating 32 <-> 64 bits conversions from moves in the
   frontend by using specific instructions

The latter change introduces 2 new mandatory ext/extu_i32_i64 ops.
For the future we might want to allow each guest to only implement 2 of
the 3 size changing ops as I started to do in the following patchset:
http://lists.nongnu.org/archive/html/qemu-devel/2015-07/msg03369.html
That said we probably want to experiment with that first and see the
impact on the performances. If wrongly implemented, things might seem
to work but some bugs might appear in very rare cases, like the
truncation problem we recently got on aarch64 and x86-64 hosts. 
Alternatively we might want to always implement the 3 ops on all
backends to avoid multiplying variants of the code and with that bugs.

This patchset has been fully tested on x86-64 host, but only lightly
tested on aarch64, ppc64 and s390x hosts.

Aurelien Jarno (10):
  tcg/optimize: optimize temps tracking
  tcg/optimize: add temp_is_const and temp_is_copy functions
  tcg/optimize: track const/copy status separately
  tcg/optimize: allow constant to have copies
  tcg: rename trunc_shr_i32 into trunc_shr_i64_i32
  tcg: don't abuse TCG type in tcg_gen_trunc_shr_i64_i32
  tcg: implement real ext_i32_i64 and extu_i32_i64 ops
  tcg/optimize: add optimizations for ext_i32_i64 and extu_i32_i64 ops
  tcg/optimize: do not remember garbage high bits for 32-bit ops
  tcg: update README about size changing ops

 tcg/README               |  20 +++-
 tcg/aarch64/tcg-target.c |   4 +
 tcg/aarch64/tcg-target.h |   2 +-
 tcg/i386/tcg-target.c    |   5 +
 tcg/i386/tcg-target.h    |   2 +-
 tcg/ia64/tcg-target.c    |   4 +
 tcg/ia64/tcg-target.h    |   2 +-
 tcg/optimize.c           | 246 ++++++++++++++++++++++-------------------------
 tcg/ppc/tcg-target.c     |   6 ++
 tcg/ppc/tcg-target.h     |   2 +-
 tcg/s390/tcg-target.c    |   5 +
 tcg/s390/tcg-target.h    |   2 +-
 tcg/sparc/tcg-target.c   |  12 ++-
 tcg/sparc/tcg-target.h   |   2 +-
 tcg/tcg-op.c             |  16 ++-
 tcg/tcg-opc.h            |   7 +-
 tcg/tcg.h                |   2 +-
 tcg/tci/tcg-target.c     |   4 +
 tcg/tci/tcg-target.h     |   2 +-
 tci.c                    |   6 +-
 20 files changed, 193 insertions(+), 158 deletions(-)

-- 
2.1.4

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2015-07-31 16:12 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-07-24 16:30 [Qemu-devel] [PATCH for-2.5 00/10] tcg: improve optimizer Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 01/10] tcg/optimize: optimize temps tracking Aurelien Jarno
2015-07-27  8:21   ` Paolo Bonzini
2015-07-27  9:09     ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 02/10] tcg/optimize: add temp_is_const and temp_is_copy functions Aurelien Jarno
2015-07-29 16:01   ` Alex Bennée
2015-07-29 16:25     ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 03/10] tcg/optimize: track const/copy status separately Aurelien Jarno
2015-07-27  8:25   ` Paolo Bonzini
2015-07-27  9:10     ` Aurelien Jarno
2015-07-29 16:10   ` Alex Bennée
2015-07-29 16:25     ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 04/10] tcg/optimize: allow constant to have copies Aurelien Jarno
2015-07-24 20:15   ` Richard Henderson
2015-07-24 22:56     ` Aurelien Jarno
2015-07-29 16:12   ` Alex Bennée
2015-07-29 16:27     ` Aurelien Jarno
2015-07-29 20:42       ` Alex Bennée
2015-07-30  7:46         ` Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 05/10] tcg: rename trunc_shr_i32 into trunc_shr_i64_i32 Aurelien Jarno
2015-07-31  6:31   ` Alex Bennée
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 06/10] tcg: don't abuse TCG type in tcg_gen_trunc_shr_i64_i32 Aurelien Jarno
2015-07-31  7:32   ` Alex Bennée
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 07/10] tcg: implement real ext_i32_i64 and extu_i32_i64 ops Aurelien Jarno
2015-07-31 16:01   ` Alex Bennée
2015-07-31 16:11     ` Richard Henderson
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 08/10] tcg/optimize: add optimizations for " Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 09/10] tcg/optimize: do not remember garbage high bits for 32-bit ops Aurelien Jarno
2015-07-24 16:30 ` [Qemu-devel] [PATCH for-2.5 10/10] tcg: update README about size changing ops Aurelien Jarno
2015-07-31 16:02   ` Alex Bennée

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).