From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.33) id 1Bs6mY-0003vk-3F for qemu-devel@nongnu.org; Tue, 03 Aug 2004 17:25:14 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.33) id 1Bs6mW-0003vR-C3 for qemu-devel@nongnu.org; Tue, 03 Aug 2004 17:25:13 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.33) id 1Bs6mW-0003vH-9Z for qemu-devel@nongnu.org; Tue, 03 Aug 2004 17:25:12 -0400 Received: from [193.252.22.22] (helo=mwinf0904.wanadoo.fr) by monty-python.gnu.org with esmtp (Exim 4.34) id 1Bs6id-0005Xj-1W for qemu-devel@nongnu.org; Tue, 03 Aug 2004 17:21:12 -0400 Received: from bellard.org (ATuileries-112-1-1-77.w80-11.abo.wanadoo.fr [80.11.167.77]) by mwinf0904.wanadoo.fr (SMTP Server) with ESMTP id 117B818005D0 for ; Tue, 3 Aug 2004 23:21:10 +0200 (CEST) Message-ID: <411001D6.6030107@bellard.org> Date: Tue, 03 Aug 2004 23:21:26 +0200 From: Fabrice Bellard MIME-Version: 1.0 Subject: Re: [Qemu-devel] [patch] performance improvement (softmmu, x86, GCC 3) References: <20040728142443.29737.qmail@web52502.mail.yahoo.com> In-Reply-To: <20040728142443.29737.qmail@web52502.mail.yahoo.com> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org I am trying your patch and will include it if no performance loss on my benchmarks with gcc 3.2. BTW, it could be possible to go a little faster by coding in assembler the unaligned access case of the C helpers which are called by the inline functions in softmmu_header.h. Fabrice. Piotr Krysik wrote: > 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 > > > ------------------------------------------------------------------------ > > 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 */ > > > ------------------------------------------------------------------------ > > _______________________________________________ > Qemu-devel mailing list > Qemu-devel@nongnu.org > http://lists.nongnu.org/mailman/listinfo/qemu-devel