mirror of
https://github.com/rust-lang/rust.git
synced 2025-10-04 19:28:29 +00:00

Get performance closer to the glibc implementations by adding assembly
fma routines, with runtime feature detection so they are used even if
not compiled with `+fma` (as the distributed standard library is often
not). Glibc uses ifuncs, this implementation stores a function pointer
in an atomic.
Results of CPU flags are also cached in order to avoid repeating the
startup time in calls to different functions. The feature detection code
is a slightly simplified version of `std-detect`.
Musl sources were used as a reference [1].
Fixes: https://github.com/rust-lang/rust/issues/140452 once synced
[1]: c47ad25ea3/src/math/x32/fma.c
compiler-builtins
and libm
This repository contains two main crates:
compiler-builtins
: symbols that the compiler expects to be available at link timelibm
: a Rust implementation of C math libraries, used to provide implementations inocre
.
More details are at compiler-builtins/README.md and libm/README.md.
For instructions on contributing, see CONTRIBUTING.md.
License
libm
may be used under the MIT Licensecompiler-builtins
may be used under the MIT License and the Apache License, Version 2.0 with the LLVM exception.- All original contributions must be under all of: the MIT license, the Apache-2.0 license, and the Apache-2.0 license with the LLVM exception.
More details are in LICENSE.txt and libm/LICENSE.txt.