[llvm-commits] [PATCH, RFC] 64-bit PowerPC ELF support for Initial Exec TLS model
Hal Finkel
hfinkel at anl.gov
Mon Dec 3 12:46:00 PST 2012
----- 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 ;)
-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
>
--
Hal Finkel
Postdoctoral Appointee
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-commits
mailing list