Re: [PATCH 11/20] alpha: add assembly mempcpy sharing the ev6 memcpy

Matt Turner <[email protected]>
Newsgroups gmane.comp.lib.glibc.alpha
Message-ID <CAEdQ38HSFN+5dgPiq7dh2SdgsHxBQkk_UcBf-aR=sSL4n4nmNg@mail.gmail.com>
On Thu, Aug 13, 2026 at 3:50 PM Wilco Dijkstra <[email protected]> wrote:
>
> Hi,
>
> > Do we really need to essentially duplicate the memcpy code for this optimization?
> > The alpha ABI cost us a bit more instruction for the function call (compare to
> > aarch64 for instance), but it does cost a lot less i-cache.
> >
> > The aarch64 uses the generic mempcpy.c and it seems not be a problem.
>
> It's not an optimization, in general it makes things worse (either slowing down
> a shared implementation or wasting L1 cache space for separate implementations).
>
> For this reason both GCC and LLVM optimize mempcpy into memcpy.
> Hence optimizing a mempcpy is completely missing the point since it will never
> be called. That's why the C version is fine.
>
> Cheers,
> Wilco

You're both right, dropping this one. I checked GCC: besides the
gimple fold (which only fires when the result is unused),
expand_builtin_mempcpy_args gates emitting a real mempcpy call on
targetm.libc_has_fast_function, which defaults to false and is
overridden only by i386.

So on alpha GCC always expands mempcpy to an inline copy or a memcpy
libcall plus an add of the length, regardless of whether the return
value is used. glibc's internal __mempcpy goes down the same path,
since include/string.h maps it to __builtin_mempcpy. The assembly
version would essentially never be called, so it's pure I-cache cost.
Dropping the patch and the two enabling changes to memcpy.S.

Thanks for setting me straight.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.