Okay, this is what I suspected.  You guys are awesome.  Thanks for confirming.  <br><br><div class="gmail_quote">On Tue, Dec 23, 2008 at 1:17 PM, Dale Johannesen <span dir="ltr"><<a href="mailto:dalej@apple.com">dalej@apple.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
On Dec 23, 2008, at 11:03 AMPST, Marc de Kruijf wrote:<br>
<br>
><br>
> I'm writing a back-end for an architecture that supports multi-word<br>
> loads.  As a concrete example, "ldqw r0, [addr]" would load a<br>
> quadword (4 words) into 4 registers starting with r0 (implicit<br>
> writes to r1, r2, and r3).<br>
<br>
</div>ARM has this.  It currently works by creating such instructions in a<br>
peephole pass following register allocation, which is not ideal.<br>
I think defining a quad-word register class containing 4 smaller<br>
registers should be doable.  See the handling of floating point on<br>
Sparc.<br>
<div class="Ih2E3d"><br>
> First, is there any currently supported architecture that has<br>
> anything like this?  I suspect not.  If not, I hope someone might<br>
> help me figure out how to make this work, particularly with the<br>
> cooperation of the register allocator?  In particular, I need the<br>
> register allocator to understand that there are multiple, contiguous<br>
> register assignments, and that their locations are moreover<br>
> dependent on the specified initial input register.<br>
><br>
> I thought about defining a set of special register classes to group<br>
> contiguous registers for each load size (2, 4, and 8), but this<br>
> doesn't feel very satisfying.  Is this the right approach?  I'm<br>
> wondering if it would work, and if so, if it would also still be<br>
> efficient.<br>
><br>
> Marc<br>
</div><div><div></div><div class="Wj3C7c">> _______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br>