[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~