[llvm-commits] Fixing Bug 13662: paired register for inline asm with 64-bit data on ARM

Jakob Stoklund Olesen stoklund at 2pi.dk
Mon Dec 17 09:43:21 PST 2012


On Dec 12, 2012, at 10:55 AM, Weiming Zhao <weimingz at codeaurora.org> wrote:

> The difference between dealing with linlineasm and ldrexd/strexd intrisics is that: for intrinsics, we lower them to MachineNode, thus the framework can get the corresponding register class via td file. For example, for ldrexd, we only need to put a ValueType of MVT::Untyped and the framework will allocate GPRPairRegClass.

Right.

> However, for inlineasm, it doesn’t check the instructions inside of it. So we have to manually create VRs for it and copy results back.

Yes. That is how all inline asm arguments work already AFAICT.

> I’m attaching my original patch.

The changes you are proposing to InstrEmitter.cpp are not safe, and since inline asm already uses virtual registers, I don't understand why they should be necessary.

/jakob

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121217/f5dd5c04/attachment.html>


More information about the llvm-commits mailing list