RFC: TLS improvements for IA32 and AMD64/EM64T

Alexandre Oliva aoliva@redhat.com
Fri Sep 16 07:27:00 GMT 2005


On Sep 16, 2005, Alexandre Oliva <aoliva@redhat.com> wrote:

> Over the past few months, I've been working on porting to IA32 and
> AMD64/EM64T the interesting bits of the TLS design I came up with for
> FR-V, achieving some impressive speedups along with slight code size
> reductions in the most common cases.

> Although the design is not set in stone yet, it's fully implemented
> and functional with patches I'm about to post for binutils, gcc and
> glibc mainline, as follow-ups to this message, except that the GCC
> patch will go to gcc-patches, as expected.

Here's the patch for binutils.

I'm not entirely happy with two aspects of the patch:

- the way I managed to emit the `call *(%[er]ax)' instruction from
  `call *variable@TLSCALL(%[er]ax)', dropping the offset from the
  instruction but still emitting the relocation, seems fragile to me,
  but there were not additional bits available to do something
  cleaner.  Any suggestions on a better approach?

- local_tlsdesc_gotent is probably too wasteful, since very few of all
  local symbols are going to require TLS descriptor entries.  I hope
  this is not too much of a problem, but I could introduce another
  data structure if people feel strongly about it.


Also note the several FIXMEs with decisions yet to be made on exact
instructions to be generated in several cases.  I'm yet to develop
some means to better evaluate the performance of each alternative, but
even then, I have limited hardware to test on.  I'd welcome feedback
from people more familiar with performance features of various
x86-compatible processors.  Anyone?  Thanks in advance,

Here's the patch.  Built and tested on x86_64-linux-gnu and
i686-pc-linux-gnu.  Ok to install?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: binutils-20050915.patch
Type: text/x-patch
Size: 201411 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20050916/e1a52821/attachment.bin>
-------------- next part --------------

-- 
Alexandre Oliva         http://www.lsd.ic.unicamp.br/~oliva/
Red Hat Compiler Engineer   aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist  oliva@{lsd.ic.unicamp.br, gnu.org}


More information about the Binutils mailing list