This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
(1) Instead of having the compiler generate a jump table, use a computed branch inside inline assembly. It's tempting to actually share code here, and generate the table out-of-line with entries like psrldq $1, %xmm0 ret and use call *%1 in the inline assembly. The use of register __m128i value __asm__("%xmm0"); could be used to restrict the compiler to the single register supported by the out-of-line table. It doesn't look like this would unduly hamper the compiler in the places it's used. There are currently 5 copies of this jump table in libc. We'd save 4*8*16 = 512 bytes of code space with the out-of-line version. (2) The two instances of jump tables involving palignr can me done just as easily by re-reading the data via an unaligned load. From a hot cache, that's surely faster than anything else we could do here. Thoughts? r~
Attachment:
z
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |