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

Jakob Stoklund Olesen stoklund at 2pi.dk
Fri Oct 26 08:48:00 PDT 2012


Andy, what are we planning for anti-dependency breaking?

/jakob

On Oct 25, 2012, at 6:33 PM, "Weiming Zhao" <weimingz at codeaurora.org> wrote:

> I figured out the reason.
> After we added the following to td file:
> def Tuples2R : RegisterTuples<[gsub_0, gsub_1],
>                              [(add R0, R2, R4, R6, R8, R10, R12),
>                               (add R1, R3, R5, R7, R9, R11, SP)]>;
> We make those GPRs alias the new Reg Class. 
> 
> Then, in CriticalAntiDepBreaker.cpp::PrescanInstruction(), it thinks R1 has
> alias, so gives up for breaking anti-dep:
> for (MCRegAliasIterator AI(Reg, TRI, false); AI.isValid(); ++AI) {
>      // If an alias of the reg is used during the live range, give up.
>      // Note that this allows us to skip checking if AntiDepReg
>      // overlaps with any of the aliases, among other things.
>      unsigned AliasReg = *AI;
>      if (Classes[AliasReg]) {
>        Classes[AliasReg] = reinterpret_cast<TargetRegisterClass *>(-1);
>        Classes[Reg] = reinterpret_cast<TargetRegisterClass *>(-1);
>      }
> 
> 
> 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 1:14 PM
> 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 25, 2012, at 12:25 PM, Weiming Zhao <weimingz at codeaurora.org> wrote:
> 
>> Hi Jakob,
>> 
>> Now, all the CodeGen fails are gone (there were 4 before I correct my
>> mistake) except for Thumb2/thumb2-uxtb.ll. 
>> It is caused by the change to ARMRegisterInfo.td alone  (I reverted 
>> the changes to the other two files and it still occurs).  I'm not 
>> clear about the cause, but it's NOT a real fail, just different 
>> (actually better) scheduling/reg alloc:
> 
> I don't like that adding a completely unused register class affects code
> generation.
> 
> Please at least figure out why it is happening.
> 
> /jakob
> 
> 




More information about the llvm-commits mailing list