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

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Oct 3 13:20:26 PDT 2012


On Oct 3, 2012, at 11:30 AM, "Weiming Zhao" <weimingz at codeaurora.org> wrote:

> Hi Jakob,
> 
> I implemented a GPRPair with "untyped".
> However, during building DAG, (SelectionDAGBuilder::visitInlineASM),  when
> it tries to do getCopyFromRegs, it fails. 
> This is because RegisterVT is unknow, so it cannot match with value type.
> And after the unknow type or i64 propagates, more places need to be
> repaired/specially treated.
> 
> Since this inline asm issue is blocking the compiling of Linux Kernel using
> LLVM, and the ldrexd/strexd intrinsics adopt the same approach as my patch,
> I suggest let's check in this patch now. In future, when LLVM supports legal
> i64 type, this will be easily fixed.  

Hi Weiming,

We are not planning on making i64 a legal type for ARM. This should be fixed properly without depending on that.

It's possible some of the target lowering code needs fixing, but I'd rather see the lowering code fixed so inline asm can read and write illegal register classes than hacking it to do some kind of register allocation during lowering.

/jakob




More information about the llvm-commits mailing list