[llvm-commits] [PATCH, RFC] 64-bit PowerPC ELF support for Initial Exec TLS model

Bill Schmidt wschmidt at linux.vnet.ibm.com
Mon Dec 3 12:55:02 PST 2012


On Mon, 2012-12-03 at 14:46 -0600, Hal Finkel wrote:
> ----- Original Message -----
> > From: "Hal Finkel" <hfinkel at anl.gov>
> > To: "Bill Schmidt" <wschmidt at linux.vnet.ibm.com>
> > Cc: llvm-commits at cs.uiuc.edu
> > Sent: Monday, December 3, 2012 2:42:25 PM
> > Subject: Re: [llvm-commits] [PATCH,	RFC] 64-bit PowerPC ELF support for Initial Exec TLS model
> > 
> > Bill,
> > 
> > Thanks for working on this!
> > 
> > One quick comment: please add triples to the test cases (otherwise
> > the Darwin ppc builtbots may complain).
> 
> Ignore this; they're there and I did not see them ;)

Too late! ;)

> 
>  -Hal
> 
> > 
> >  -Hal
> > 
> > ----- Original Message -----
> > > From: "Bill Schmidt" <wschmidt at linux.vnet.ibm.com>
> > > To: llvm-commits at cs.uiuc.edu
> > > Sent: Monday, December 3, 2012 2:09:05 PM
> > > Subject: [llvm-commits] [PATCH,	RFC] 64-bit PowerPC ELF support for
> > > Initial Exec TLS model
> > > 
> > > Here's some incremental progress on thread-local storage.  I've
> > > verified
> > > it introduces no regressions.  Thought I'd open it up to comments
> > > before
> > > committing in case there's anything obvious I've missed.
> > > 
> > > I've had one comment that the lib/Target/PowerPC/PPC.h changes
> > > could
> > > be
> > > a separate patch.  I'm not sure if that's useful, since there isn't
> > > any
> > > new testable function by doing that.  But I don't feel strongly
> > > either
> > > way.
> > > 
> > > Thanks,
> > > Bill
> > > --
> > > Bill Schmidt, Ph.D.
> > > IBM Advance Toolchain for PowerLinux
> > > IBM Linux Technology Center
> > > wschmidt at linux.vnet.ibm.com
> > > wschmidt at us.ibm.com
> > > 
> > > --------------------------------------------------------------------------
> > > This patch introduces initial-exec model support for thread-local
> > > storage
> > > on 64-bit PowerPC ELF.
> > > 
> > > The patch includes code to handle external assembly and MC output
> > > with the
> > > integrated assembler.  It intentionally does not support the "old"
> > > JIT.
> > > 
> > > For the initial-exec TLS model, the ABI requires the following to
> > > calculate
> > > the address of external thread-local variable x:
> > > 
> > >  Code sequence            Relocation                  Symbol
> > >   ld 9,x at got@tprel(2)      R_PPC64_GOT_TPREL16_DS      x
> > >   add 9,9,x at tls            R_PPC64_TLS                 x
> > > 
> > > The register 9 is arbitrary here.  The linker will replace
> > > x at got@tprel
> > > with the offset relative to the thread pointer to the generated GOT
> > > entry for symbol x.  It will replace x at tls with the thread-pointer
> > > register (13).
> > > 
> > > The two test cases verify correct assembly output and relocation
> > > output
> > > as just described.
> > > 
> > > PowerPC-specific selection node variants are added for the two
> > > instructions above:  LD_GOT_TPREL and ADD_TLS.  These are inserted
> > > when an initial-exec global variable is encountered by
> > > PPCTargetLowering::LowerGlobalTLSAddress(), and later lowered to
> > > machine instructions LDgotTPREL and ADD8TLS.  LDgotTPREL is a
> > > pseudo
> > > that uses the same LDrs support added for medium code model's
> > > LDtocL,
> > > with a different relocation type.
> > > 
> > > The rest of the processing is (relatively) straightforward.
> > > 
> > > 
> > > _______________________________________________
> > > llvm-commits mailing list
> > > llvm-commits at cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> > > 
> > 
> > --
> > Hal Finkel
> > Postdoctoral Appointee
> > Leadership Computing Facility
> > Argonne National Laboratory
> > 
> 





More information about the llvm-commits mailing list