[llvm-commits] [PATCH, RFC] 64-bit PowerPC ELF support for Initial Exec TLS model
Hal Finkel
hfinkel at anl.gov
Mon Dec 3 12:42:25 PST 2012
Bill,
Thanks for working on this!
One quick comment: please add triples to the test cases (otherwise the Darwin ppc builtbots may complain).
-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