qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [patch] performance improvement (softmmu, x86, GCC 3)
@ 2004-07-28 14:24 Piotr Krysik
  2004-07-31  5:00 ` André Braga
  2004-08-03 21:21 ` Fabrice Bellard
  0 siblings, 2 replies; 6+ messages in thread
From: Piotr Krysik @ 2004-07-28 14:24 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: text/plain, Size: 828 bytes --]

Hi!

I'm attaching a small patch to enable assembly 
implementation of ld, lds and st (from 
softmmu_header.h) for GCC 3.3 and GCC 3.4 when 
running softmmu x86 guest on x86 host.

With my simple benchmark (dd if=/dev/zero bs=1M 
count=16 | gzip -9 on Linux guest) this patch 
improves performance by about 8% (QEMU compiled 
with GCC 3.3 on Pentium II Debian host).


Regards,

Piotrek


PS. I also considered removing "%ecx" from register 
constraints of st (softmmu_header.h, line 224) and 
explicitly saving ecx before calling __st (line 198), 
but performance gain was much smaller. I suspect that 
gcse optimization and asm blocks under GCC 3.3 and 
GCC 3.4 don't mix well in QEMU.



		
__________________________________
Do you Yahoo!?
Yahoo! Mail is new and improved - Check it out!
http://promotions.yahoo.com/new_mail

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gcc3-no-gcse.diff --]
[-- Type: text/x-patch; name="gcc3-no-gcse.diff", Size: 1177 bytes --]

diff -ru qemu-0.6.0/Makefile.target qemu-0.6.0-gcc3/Makefile.target
--- qemu-0.6.0/Makefile.target	2004-07-10 20:20:09.000000000 +0200
+++ qemu-0.6.0-gcc3/Makefile.target	2004-07-28 13:05:31.000000000 +0200
@@ -73,7 +73,7 @@
 CFLAGS+=-fomit-frame-pointer
 OP_CFLAGS=$(CFLAGS) -mpreferred-stack-boundary=2
 ifeq ($(HAVE_GCC3_OPTIONS),yes)
-OP_CFLAGS+= -falign-functions=0
+OP_CFLAGS+= -falign-functions=0 -fno-gcse
 else
 OP_CFLAGS+= -malign-functions=0
 endif
diff -ru qemu-0.6.0/target-i386/op.c qemu-0.6.0-gcc3/target-i386/op.c
--- qemu-0.6.0/target-i386/op.c	2004-07-10 20:20:09.000000000 +0200
+++ qemu-0.6.0-gcc3/target-i386/op.c	2004-07-28 13:08:00.000000000 +0200
@@ -20,11 +20,9 @@
 
 /* XXX: must use this define because the soft mmu macros have huge
    register constraints so they cannot be used in any C code. gcc 3.3
-   does not seem to be able to handle some constraints in rol
-   operations, so we disable it. */
-#if !(__GNUC__ == 3 && __GNUC_MINOR__ == 3)
+   does not seem to be able to handle some constraints in rol unless we
+   disable gcse optimization. */
 #define ASM_SOFTMMU
-#endif
 #include "exec.h"
 
 /* n must be a constant to be efficient */

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

end of thread, other threads:[~2004-08-05  1:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-28 14:24 [Qemu-devel] [patch] performance improvement (softmmu, x86, GCC 3) Piotr Krysik
2004-07-31  5:00 ` André Braga
2004-08-04 12:50   ` Piotr Krysik
2004-08-04 17:21     ` André Braga
2004-08-05  1:43       ` Piotr Krysik
2004-08-03 21:21 ` Fabrice Bellard

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).