diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-03-08 19:58:25 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-03-08 20:20:45 +0000 |
| commit | 54cbb6e7531f95e086d5c3dd0d5e73bfbe3545ba (patch) | |
| tree | b64eb15ba0bf24ce3d634aafc6d3c4a9607a1883 | |
| parent | b0809eadef2ef8fba3d34e6aace9ad6190d5aa67 (diff) | |
| download | rust-54cbb6e7531f95e086d5c3dd0d5e73bfbe3545ba.tar.gz rust-54cbb6e7531f95e086d5c3dd0d5e73bfbe3545ba.zip | |
Use sqrt clif instruction for sqrt rust intrinsics
| -rw-r--r-- | patches/0001-portable-simd-Disable-sqrt-test-for-MinGW.patch | 27 | ||||
| -rw-r--r-- | src/intrinsics/mod.rs | 5 |
2 files changed, 4 insertions, 28 deletions
diff --git a/patches/0001-portable-simd-Disable-sqrt-test-for-MinGW.patch b/patches/0001-portable-simd-Disable-sqrt-test-for-MinGW.patch deleted file mode 100644 index 9f53208814b..00000000000 --- a/patches/0001-portable-simd-Disable-sqrt-test-for-MinGW.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 94d120099daad021de3da9249a9ea655592f8787 Mon Sep 17 00:00:00 2001 -From: bjorn3 <17426603+bjorn3@users.noreply.github.com> -Date: Fri, 8 Mar 2024 18:26:17 +0000 -Subject: [PATCH] Disable sqrt test for MinGW - ---- - crates/std_float/tests/float.rs | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/crates/std_float/tests/float.rs b/crates/std_float/tests/float.rs -index c66c968..9a13dd0 100644 ---- a/crates/std_float/tests/float.rs -+++ b/crates/std_float/tests/float.rs -@@ -53,7 +53,9 @@ macro_rules! impl_tests { - mod $scalar { - use std_float::StdFloat; - -- unary_test! { $scalar, sqrt, sin, cos, exp, exp2, ln, log2, log10, ceil, floor, round, trunc } -+ unary_test! { $scalar, sin, cos, exp, exp2, ln, log2, log10, ceil, floor, round, trunc } -+ #[cfg(not(all(target_os = "windows", target_env = "gnu")))] // Rounding error with MinGW -+ unary_test! { $scalar, sqrt } - binary_test! { $scalar, log } - ternary_test! { $scalar, mul_add } - --- -2.34.1 - diff --git a/src/intrinsics/mod.rs b/src/intrinsics/mod.rs index 9b8167fa2bf..8b86a116df1 100644 --- a/src/intrinsics/mod.rs +++ b/src/intrinsics/mod.rs @@ -391,12 +391,15 @@ fn codegen_float_intrinsic_call<'tcx>( | sym::ceilf32 | sym::ceilf64 | sym::truncf32 - | sym::truncf64 => { + | sym::truncf64 + | sym::sqrtf32 + | sym::sqrtf64 => { let val = match intrinsic { sym::fabsf32 | sym::fabsf64 => fx.bcx.ins().fabs(args[0]), sym::floorf32 | sym::floorf64 => fx.bcx.ins().floor(args[0]), sym::ceilf32 | sym::ceilf64 => fx.bcx.ins().ceil(args[0]), sym::truncf32 | sym::truncf64 => fx.bcx.ins().trunc(args[0]), + sym::sqrtf32 | sym::sqrtf64 => fx.bcx.ins().sqrt(args[0]), _ => unreachable!(), }; |
