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]

Re: Should we compile x86-64 ld.so with -mno-sse -mno-sse?


On Thu, Nov 01, 2012 at 04:20:00PM -0700, H.J. Lu wrote:
> On Thu, Nov 1, 2012 at 4:23 AM, Ondrej Bilka <neleai@seznam.cz> wrote:
> > On Wed, Oct 31, 2012 at 04:18:10PM -0700, H.J. Lu wrote:
> >> On Wed, Oct 31, 2012 at 3:59 PM, Richard Henderson <rth@twiddle.net> wrote:
> >> > On 2012-11-01 03:10, Carlos O'Donell wrote:
> >> >> What use case is there for not wanting to touch SEE in ld.so?
> >> >
> >> > I can only imagine HJL is worried about AVX performance if the
> >> > dynamic linker uses SSE insns.
> >> >
> >>
> >> That is not the main reason.  We make sure that ld.so string/memory
> >> functions never touch SSE/AVX registers.  It is not for performance,
> >> but for correctness.  Otherwise callee will get random values in
> >> vector registers,
> >
> > Or we can save and restore used xmm registers or I am missing something?
> 
> But it will introduce extra over head for every symbol lookup
> and it wouldn't be forward compatible with AVX since we would
> only save/restore 128bit SSE registers, not 256bit AVX registers.

I'm confused what the issue is. As far as I know, the SSE/AVX
registers are not call-saved, they're call-clobbered. As such, it
makes no difference what you do with them in the dynamic linker.

Source: x86_64 psABI (http://www.x86-64.org/documentation/abi.pdf),
3.2.1 Registers and the Stack Frame.

Rich


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]