public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "Zack Weinberg" <zack@owlfolio.org>
To: "Richard Henderson" <richard.henderson@linaro.org>,
	<libc-alpha@sourceware.org>
Subject: Re: Maybe we should get rid of ifuncs
Date: Wed, 24 Apr 2024 10:43:44 -0400	[thread overview]
Message-ID: <D0SFLF8OIMBC.1EBZ7PS3F0ECV@owlfolio.org> (raw)
In-Reply-To: <c4600804-6d44-4c94-ad43-60a7dc1ba7a6@linaro.org>

On Tue Apr 23, 2024 at 9:41 PM EDT, Richard Henderson wrote:
> On 4/23/24 11:14, Zack Weinberg wrote:
> > (2) Are there existing ifuncs that perform CPU-capability-based
> > function selection that*could not*  be replaced with an array of bit
> > vectors like what I sketched in the previous paragraph?
>
> How much is in actual use, I have no idea.  However:
> Even x86 cpuid generates a staggeringly large bit vector.

Oof, yeah.  sizeof(struct cpu_features) == 488 on x86_64, and over
half of that is cpuid dumps.  It probably _could_ be compacted,
but as Florian pointed out any compaction we implement means glibc
has to be updated for new CPU features (but then again we have to
do that _anyway_...)

Another thing that looking at cpu_features makes obvious is that
several architectures include numbers that can't easily be reduced
to one-hot representation.  It'd be reasonable to want to dispatch on
cache line size, for instance.  I don't like the idea of embedding
something even vaguely resembling a bytecode interpreter in ld.so,
and yet...

I'm very curious what the plan for function multiversioning in GCC
and LLVM is, and how close to declarative it gets.

zw

  reply	other threads:[~2024-04-24 14:43 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-23 18:14 Zack Weinberg
2024-04-23 18:39 ` enh
2024-04-23 19:46   ` Palmer Dabbelt
2024-04-24 13:56   ` Zack Weinberg
2024-04-24 14:25     ` enh
2024-04-23 18:52 ` Sam James
2024-04-23 18:54 ` Florian Weimer
2024-04-24 13:53   ` Zack Weinberg
2024-04-23 19:26 ` Andreas Schwab
2024-04-24 13:54   ` Zack Weinberg
2024-04-24  1:41 ` Richard Henderson
2024-04-24 14:43   ` Zack Weinberg [this message]
2024-04-24 15:09     ` enh
2024-04-28  0:24     ` Peter Bergner
2024-05-02  2:59       ` Michael Meissner
2024-04-30  8:42 ` Simon Josefsson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D0SFLF8OIMBC.1EBZ7PS3F0ECV@owlfolio.org \
    --to=zack@owlfolio.org \
    --cc=libc-alpha@sourceware.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).