[LLVMdev] CFI directives and register names?

Hal Finkel hfinkel at anl.gov
Tue Mar 11 10:52:07 PDT 2014


----- Original Message -----
> From: "Hal Finkel" <hfinkel at anl.gov>
> To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
> Sent: Tuesday, March 11, 2014 11:13:25 AM
> Subject: [LLVMdev] CFI directives and register names?
> 
> Hi everyone,
> 
> I don't *really* understand CFI directives, so hopefully someone who
> does can help explain what needs to be done:
> 
> On PowerPC we have a set of floating-point registers (f0, f1, f2,
> etc.) and we produce CFI directives for them like this:
> 
>   .cfi_offset f0, 300
> 
> and, moreover, test/MC/PowerPC/ppc64-regs.s ensures that for every
> such directive we can spit it back out again correctly. Some
> more-recent cores support an ISA extension which adds new super
> registers for each of these floating-point registers. According to
> gcc, these super registers share the same DWARF numbers as their
> traditional subregister. Simply adding these new registers, with the
> corresponding DWARF numbers, to the backend causes a change in how
> these CFI directives are produced. Specifically, when:
> 
>   .cfi_offset f0, 300
> 
> is run through llvm-mc --show-encoding is outputs:
> 
>   .cfi_offset vs0, 300
> 
> which has the name of the super register (similarly, the actual
> assembly output from llc also now contains the super registers in
> the CFI directives). I have a few questions:
> 
>  1. Is this a correctness problem or does it just look weird?
> 
>  2. What is the best way to fix this?

To partially answer my own question, I just noticed DwarfRegAlias. Using that seems to provide a way to tag the DWARF numbers of the new super registers without changing the name that is printed.

 -Hal

> 
> When I chatted briefly with Raphael this morning, he suggested that
> we might need to change the TargetRegistry::RegisterMCRegInfo
> callback to take SubtargetInfo object. I suppose we could move the
> DWARF flavor determination into SubtargetInfo? I think in practice
> this means making createMCRegInfo take a MCSubtargetInfo*.
> 
> Thanks in advance,
> Hal
> 
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> 

-- 
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory



More information about the llvm-dev mailing list