[PATCH 3/4] sparc: Use default memcpy for rtld objects
David Miller
davem@davemloft.net
Thu Oct 5 18:26:00 GMT 2017
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date: Thu, 5 Oct 2017 15:02:02 -0300
> Thanks for the explanation, although it does not explain why the ultra1
> is currently the default for sparc64 (sysdeps/sparc/sparc64/memcpy.S)
> and also the default selection for multiarch. The C version is used
> solely for loader currently.
I never got around to fixing up this situation on the glibc side,
that's why.
> I tried to check which are the performance of C implementation against
> ultra1 one on a niagara5 and results are:
>
> - on bench-memcpy the C version is slight slower for sizes up to
> 32 (about 4% faster for sizes up to 16, 40% from 16 to 32 and
> 50% up to 32). It is definitely faster for sizes higher than
> 64 (62% faster for sizes from 64 to 128 and 85% for sizes
> higher than 128).
>
> - on bench-memcpy-random shows no performance difference, however
> bench-memcpy-large shows the C implementation is indeed faster
> for all inputs.
>
> So I think that instead of using default memcpy for rtld, the best
> strategy would to use the C implementation instead as default and
> add ultra1 as another option for ifunc resolution.
Yes, that's a good way to go.
More information about the Libc-alpha
mailing list