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

Weiming Zhao weimingz at codeaurora.org
Wed Oct 31 15:15:01 PDT 2012


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?

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(). If we can let TableGen
generate names like "R0, R1" instead of "R0_R1", it would be easier. 

Thanks,
Weiming

Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by
The Linux Foundation


-----Original Message-----
From: Weiming Zhao [mailto:weimingz at codeaurora.org] 
Sent: Friday, October 26, 2012 5:54 PM
To: 'Jakob Stoklund Olesen'
Cc: 'Jim Grosbach'; 'llvm-commits at cs.uiuc.edu'; 'zinob at codeaurora.org'
Subject: RE: [llvm-commits] Fixing Bug 13662: paired register for inline asm
with 64-bit data on ARM

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

Please help to review it.

Thanks,
Weiming

Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by
The Linux Foundation

-----Original Message-----
From: Jakob Stoklund Olesen [mailto:stoklund at 2pi.dk]
Sent: Thursday, October 25, 2012 9:31 AM
To: weimingz at codeaurora.org
Cc: 'Jim Grosbach'; llvm-commits at cs.uiuc.edu; zinob at codeaurora.org
Subject: Re: [llvm-commits] Fixing Bug 13662: paired register for inline asm
with 64-bit data on ARM


On Oct 23, 2012, at 2:57 PM, Weiming Zhao <weimingz at codeaurora.org> wrote:

> When I run "make check", even without my patch, I still see 93 
> unexpected failures. So maybe I ignored that failure.

Please get that fixed before sending more patches. I can't do basic checking
for you.

/jakob





More information about the llvm-commits mailing list