This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Number of registers on x86
- To: dan at www dot cgsoftware dot com, tm2 at best dot com
- Subject: Re: Number of registers on x86
- From: dewar at gnat dot com
- Date: Mon, 29 Jan 2001 22:06:43 -0500 (EST)
- Cc: gcc at gcc dot gnu dot org
<<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.