diff options
| author | bors <bors@rust-lang.org> | 2022-02-03 09:15:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-02-03 09:15:16 +0000 |
| commit | 796bf14f2e129283d9daee7f05d14c2dfa76d643 (patch) | |
| tree | 5574b5f443c0dcd292507bf907c083a0bb7535fe /library/std/src | |
| parent | 1be5c8f90912c446ecbdc405cbc4a89f9acd20fd (diff) | |
| parent | e96159e9af4e55070481a7c071e61e0adf337807 (diff) | |
| download | rust-796bf14f2e129283d9daee7f05d14c2dfa76d643.tar.gz rust-796bf14f2e129283d9daee7f05d14c2dfa76d643.zip | |
Auto merge of #93146 - workingjubilee:use-std-simd, r=Mark-Simulacrum
pub use std::simd::StdFloat;
Syncs portable-simd up to commit rust-lang/portable-simd@03f6fbb21e6050da2a05b3ce8f480c020b384916,
Diff: https://github.com/rust-lang/portable-simd/compare/533f0fc81ab9ba097779fcd27c8f9ea12261fef5...03f6fbb21e6050da2a05b3ce8f480c020b384916
This sync requires a little bit more legwork because it also introduces a trait into `std::simd`, so that it is no longer simply a reexport of `core::simd`. Out of simple-minded consistency and to allow more options, I replicated the pattern for the way `core::simd` is integrated in the first place, however this is not necessary if it doesn't acquire any interdependencies inside `std`: it could be a simple crate reexport. I just don't know yet if that will happen or not.
To summarize other misc changes:
- Shifts no longer panic, now wrap on too-large shifts (like `Simd` integers usually do!)
- mask16x32 will now be many i16s, not many i32s... 🙃
- `#[must_use]` is spread around generously
- Adjusts division, float min/max, and `Mask::{from,to}_array` internally to be faster
- Adds the much-requested `Simd::cast::<U>` function (equivalent to `simd.to_array().map(|lane| lane as U)`)
Diffstat (limited to 'library/std/src')
| -rw-r--r-- | library/std/src/lib.rs | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs index 3a6b931f53b..4f44a3183a6 100644 --- a/library/std/src/lib.rs +++ b/library/std/src/lib.rs @@ -311,6 +311,7 @@ #![feature(panic_can_unwind)] #![feature(panic_unwind)] #![feature(pin_static_ref)] +#![feature(platform_intrinsics)] #![feature(portable_simd)] #![feature(prelude_import)] #![feature(ptr_as_uninit)] @@ -456,8 +457,6 @@ pub use core::pin; pub use core::ptr; #[stable(feature = "rust1", since = "1.0.0")] pub use core::result; -#[unstable(feature = "portable_simd", issue = "86656")] -pub use core::simd; #[unstable(feature = "async_stream", issue = "79024")] pub use core::stream; #[stable(feature = "i128", since = "1.26.0")] @@ -504,6 +503,25 @@ pub mod time; #[unstable(feature = "once_cell", issue = "74465")] pub mod lazy; +// Pull in `std_float` crate into libstd. The contents of +// `std_float` are in a different repository: rust-lang/portable-simd. +#[path = "../../portable-simd/crates/std_float/src/lib.rs"] +#[allow(missing_debug_implementations, dead_code, unsafe_op_in_unsafe_fn, unused_unsafe)] +#[allow(rustdoc::bare_urls)] +#[unstable(feature = "portable_simd", issue = "86656")] +#[cfg(not(all(miri, doctest)))] // Miri does not support all SIMD intrinsics +mod std_float; + +#[cfg(not(all(miri, doctest)))] // Miri does not support all SIMD intrinsics +#[doc = include_str!("../../portable-simd/crates/core_simd/src/core_simd_docs.md")] +#[unstable(feature = "portable_simd", issue = "86656")] +pub mod simd { + #[doc(inline)] + pub use crate::std_float::StdFloat; + #[doc(inline)] + pub use core::simd::*; +} + #[stable(feature = "futures_api", since = "1.36.0")] pub mod task { //! Types and Traits for working with asynchronous tasks. |
