[PATCH 0/2] libm/riscv: Fixing machine-specific fma/sqrt

Keith Packard keithp@keithp.com
Thu Sep 3 20:54:31 GMT 2020


RISC-V has a couple of acceleration paths that are designed to repace
the general code for sqrt and fma.

The sqrt code was using the wrong filenames and ended up replacing the
wrong functions (sqrt instead of __ieee754_sqrt). For builds that
disabled errno, that code provided an alias for sqrt mapping to
__ieee754_sqrt so things "worked".

The fma code had the right filenames, but because it only generated
code on machines with hardware support, machines lacking it ended up
replacing the useful general implementation with an empty object file.

To fix this, I've renamed the RISC-V sqrt files then fixed both sqrt
and fma to #include the general code when the machine-specific code
wasn't used.

I tested the result by making sure every libm.a generated for RISC-V
contained exactly one of each relevant function.




More information about the Newlib mailing list