qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] cpu: Move tcg_exit_req to the end of CPUState


From: Richard Henderson
Subject: Re: [Qemu-devel] [PATCH] cpu: Move tcg_exit_req to the end of CPUState
Date: Wed, 19 Mar 2014 15:13:22 -0700
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0

On 03/19/2014 02:13 PM, Andreas Färber wrote:
> Am 19.03.2014 22:04, schrieb Richard Henderson:
>> Ping?  This is a significant TCG code size regression
>> for ARM, AArch64, and Sparc hosts.  It helps x86 too,
>> though that's not as severe.
> 
> Sorry, applied to qom-cpu now:
> https://github.com/afaerber/qemu-cpu/commits/qom-cpu
> 
> How did you find this? Was there some assertion on one target, or do you
> have some analysis code that you could share?

No assertions; all of the targets worked.

I was just reading asm_out dumps as I improved the Sparc backend.
We went from beginning with

0x40000000:  ld  [ %i0 + -76 ], %l0

to

0x40000000:  sethi  %hi(0xffffbc00), %g1
0x40000004:  or  %g1, 0x2ec, %g1        ! 0xffffbeec
0x40000008:  ld  [ %i0 + %g1 ], %l0

That constant is of course -16660, out of range of the 13-bit signed addend.

Then I got to thinking: ARM also has a 13-bit range (though in a silly 1's
compliment form), AArch64 has an 8-bit signed addend, and i386 can use a
smaller encoding for an 8-bit signed addend.  So it could benefit just about
all of the backends to keep this offset relatively small.


r~



reply via email to

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