Putting aside most of your earlier comment,
> the question is how many exceptions would arise, and what the speed penalty would be to fall back to the next slower implementation.
This can be done for essentially free with ifuncs.
Here's a crummy example from the GCC docs: https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.ht...
Here's a more thorough and (IMO) intelligible treatise on the subject: https://lwn.net/Articles/691932/