<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
> I'm not quite convinced by this. On AArch64, GCC supports the %H, %Q<br>
> and %R operand modifiers which very explicitly deal with a pair of<br>
> 64-bit registers. These are intended to be used with the 'r'<br>
> constraint (I asked, specifically because there wasn't a corresponding<br>
> "register-pair" constraint).<br>
><br></div></blockquote><div><br></div><div>Admittedly it's a new port, but yes, this is how gcc's register allocation works.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">
> It could just be the new port and no-one's noticed the rules have been<br>
> broken yet, of course. So we could take the high road, but it's a<br>
> little unclear who we should go whinging to that GCC is breaking the<br>
> rules of the GCC-specific inline assembly syntax.<br>
<br>
</div>Hmm... it isn't completely without precedent to have a constraint<br>
which refers to multiple registers (like the x86 "A" constraint), but<br>
it doesn't seem like something which can be done generically: what<br>
"pairs" would we allow for "r" on e.g. x86?<br>
<br>
Of course, while writing this, I just realized this is a variant of a<br>
bug which has been discussed on llvm-commits: PR13622.  And gcc<br>
actually does implement pairs on x86; I think the choice of registers<br>
is based on some internal register allocator sequence.  And gcc also<br>
knows how to allocate register triplets on x86 (though I have no clue<br>
how you would use them). :)<br>
<br>
Ugh, I wish gcc's inline asm extension didn't expose so much of the<br>
insanity of gcc internals.<br></blockquote><div><br></div><div>Yes, inline assembly that exposes register allocation details is pretty annoying.</div><div><br></div><div>Jakob: Thoughts on how you'd want to model this as it goes through the allocator?</div>
<div><br></div><div>-eric </div></div></div>