Merge pull request rust-lang/libm#297 from GuillaumeGomez/only-soft-floats

This commit is contained in:
Amanieu d'Antras 2024-08-08 11:13:08 +01:00 committed by GitHub
commit 195e2b4153
5 changed files with 9 additions and 5 deletions

View file

@ -23,6 +23,9 @@ unstable = []
# musl libc.
musl-reference-tests = ['rand']
# Used to prevent using any intrinsics or arch-specific code.
force-soft-floats = []
[workspace]
members = [
"crates/compiler-builtins-smoke-test",

View file

@ -10,3 +10,4 @@ bench = false
[features]
unstable = []
checked = []
force-soft-floats = []

View file

@ -76,7 +76,7 @@ macro_rules! div {
macro_rules! llvm_intrinsically_optimized {
(#[cfg($($clause:tt)*)] $e:expr) => {
#[cfg(all(feature = "unstable", $($clause)*))]
#[cfg(all(feature = "unstable", not(feature = "force-soft-floats"), $($clause)*))]
{
if true { // thwart the dead code lint
$e

View file

@ -92,7 +92,7 @@ pub fn sqrt(x: f64) -> f64 {
}
}
}
#[cfg(target_feature = "sse2")]
#[cfg(all(target_feature = "sse2", not(feature = "force-soft-floats")))]
{
// Note: This path is unlikely since LLVM will usually have already
// optimized sqrt calls into hardware instructions if sse2 is available,
@ -107,7 +107,7 @@ pub fn sqrt(x: f64) -> f64 {
_mm_cvtsd_f64(m_sqrt)
}
}
#[cfg(not(target_feature = "sse2"))]
#[cfg(any(not(target_feature = "sse2"), feature = "force-soft-floats"))]
{
use core::num::Wrapping;

View file

@ -27,7 +27,7 @@ pub fn sqrtf(x: f32) -> f32 {
}
}
}
#[cfg(target_feature = "sse")]
#[cfg(all(target_feature = "sse", not(feature = "force-soft-floats")))]
{
// Note: This path is unlikely since LLVM will usually have already
// optimized sqrt calls into hardware instructions if sse is available,
@ -42,7 +42,7 @@ pub fn sqrtf(x: f32) -> f32 {
_mm_cvtss_f32(m_sqrt)
}
}
#[cfg(not(target_feature = "sse"))]
#[cfg(any(not(target_feature = "sse"), feature = "force-soft-floats"))]
{
const TINY: f32 = 1.0e-30;