Number of registers on x86
dewar@gnat.com
dewar@gnat.com
Mon Jan 29 19:06:00 GMT 2001
<<Register renaming only makes the processor more tolerant to
suboptimal instruction scheduling. It doesn't give the compiler
any more registers to use per se.
>>
Of course, but the question is how to stop the register allocator
THINKING there is a conflict when there isn't, and thus using
more registers than it should.
Take your example
mov (%esi),eax
movl eax,(%edi)
movl 4(%esi),eax
mov.l eax,4(%edi)
A register allocator not realizing that the two eax's are different here
may try to use two registers.
The suggested technique, which is to pretend there are 40 registers,
and then when you have a schedule with 40 registers, collapse it
with knowledge of how the renaming works, is an interesting approach,
which might work better than ignoring renaming completely.
More information about the Gcc
mailing list