On 9/29/06, David Edelsohn <[EMAIL PROTECTED]> wrote:
>>>>> Erich Plondke writes:
Erich> rs6000 and Sparc ports seem to use a peephole2 to get the ldd or lfq
Erich> instructions (respectively), but it looks like there's no reason for
Erich> the register allocater to allocate registers together. The peephole2
Erich> just picks up loads to adjacent memory locations if the allocater
Erich> happens to choose adjacent registers (is that correct?) or the
Erich> variables are specified as living in hard registers with the help
Erich> of an asm.
On both rs6000 and sparc, the code includes a test that the
registers are adjacent. See registers_ok_for_quad_peep() in rs6000.md and
rs6000.c, and equivalent in sparc.
Yes, but peephole2 lives after register allocation, so how does the target
tell the register allocator that adjacent values loaded from memory should
also attempt to be placed adjacent in the register file?
It looks like if they /happen/ to be allocated together in the
register file, the
peephole pattern will catch them, but I don't see anything to help them be
allocated in such a way.
--
Why are ``tolerant'' people so intolerant of intolerant people?