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

Jakob Stoklund Olesen stoklund at 2pi.dk
Tue Oct 30 10:59:41 PDT 2012


On Oct 26, 2012, at 5:54 PM, Weiming Zhao <weimingz at codeaurora.org> wrote:

> Hi Jakob,
> 
> Attached is my 2nd patch that replaces hard coded [R0, R1] of
> Intrinsic::arm_ldrexd and [R2, R3] of Intrinsic::arm_strexd 
> I plan to include the inlineASM fix into next patch. 
> 
> This patch passes the unit tests especially test/CodeGen/ARM/ldstrexd.ll

Hi Weiming,

This is the right direction, but it is very important that the GPRPair constraint is expressed on the instruction itself. That is, strexd should read a single 'register' from the GPRPair register class instead of two GPR registers.

Without that constraint, there is no guarantee that later passes won't undo what you did in SelectionDAG.

The same applies to inline assembly.

/jakob




More information about the llvm-commits mailing list