[LLVMdev] Register Dependencies and Register Allocation
Dale Johannesen
dalej at apple.com
Tue Dec 23 11:17:53 PST 2008
On Dec 23, 2008, at 11:03 AMPST, Marc de Kruijf wrote:
>
> I'm writing a back-end for an architecture that supports multi-word
> loads. As a concrete example, "ldqw r0, [addr]" would load a
> quadword (4 words) into 4 registers starting with r0 (implicit
> writes to r1, r2, and r3).
ARM has this. It currently works by creating such instructions in a
peephole pass following register allocation, which is not ideal.
I think defining a quad-word register class containing 4 smaller
registers should be doable. See the handling of floating point on
Sparc.
> First, is there any currently supported architecture that has
> anything like this? I suspect not. If not, I hope someone might
> help me figure out how to make this work, particularly with the
> cooperation of the register allocator? In particular, I need the
> register allocator to understand that there are multiple, contiguous
> register assignments, and that their locations are moreover
> dependent on the specified initial input register.
>
> I thought about defining a set of special register classes to group
> contiguous registers for each load size (2, 4, and 8), but this
> doesn't feel very satisfying. Is this the right approach? I'm
> wondering if it would work, and if so, if it would also still be
> efficient.
>
> Marc
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list