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@03f6fbb21e,
Diff: 533f0fc81a...03f6fbb21e
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)`)
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user