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