Performance degradation on g++ 4.6
Oleg Smolsky
oleg.smolsky@riverbed.com
Wed Aug 24 21:26:00 GMT 2011
On 2011/8/24 13:02, Xinliang David Li wrote:
>> On 2011/8/23 11:38, Xinliang David Li wrote:
>>> Partial register stall happens when there is a 32bit register read
>>> followed by a partial register write. In your case, the stall probably
>>> happens in the next iteration when 'add eax, 0Ah' executes, so your
>>> manual patch does not work. Try change
>>>
>>> add al, [dx] into two instructions (assuming esi is available here)
>>>
>>> movzx esi, ds:data8[dx]
>>> add eax, esi
>>>
>> I patched the code to use "movzx edi" but the result is a little clumsy as
>> the loop is based on the virtual address rather than index.
> my bad -- I did copy& paste without making it precise.
No worries. The fragment did fit into the padding :)
>> So, this is one test out of the suite. Many of them degraded... Are you guys
>> interested in looking at other ones? Or is there something to be fixed in
>> the register allocation logic?
> File bugs --- the isolated examples like this one would be very
> helpful in the bug report.
Done:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50182
Regards,
Oleg.
More information about the Gcc
mailing list