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

Jim Grosbach grosbach at apple.com
Wed Oct 31 15:23:33 PDT 2012


On Oct 31, 2012, at 3:17 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:

> 
> On Oct 31, 2012, at 3:15 PM, "Weiming Zhao" <weimingz at codeaurora.org> wrote:
> 
>> Hi Jakob,
>> 
>> I'm changing the ldrexd/strexd of ARMInstrInfo.td to
>> def LDREXD: AIldrex<0b01, (outs GPRPair:$Rt),(ins addr_offset_none:$addr),
>>                     NoItinerary, "ldrexd", "\t$Rt, $addr", []> {
>> let DecoderMethod = "DecodeDoubleRegLoad";
>> }
>> 
>> def STREXD : AIstrex<0b01, (outs GPR:$Rd),
>>                   (ins GPRPair:$Rt, addr_offset_none:$addr),
>>                   NoItinerary, "strexd", "\t$Rd, $Rt, $addr", []> {
>> let DecoderMethod = "DecodeDoubleRegStore";
>> }
>> 
>> Is this the way you're referring to?
> 
> Exactly.
> 
>> So far, it almost works but I need to deal with printing "R0_R1" for the
>> GPRPair reg name. I'm planning to do it in
>> InstPrinter/ARMInstPrinter.cpp::printOperand().
> 
> I think that's right. Jim?

Sure, that'll work. Changing the instruction definitions like this will require some work in the AsmParser, too, though. I'm surprised you're not seeing a "make check" failure on basic-arm-instructions.s with these changes.

-Jim



More information about the llvm-commits mailing list