Expose portable-simd as core::simd
This enables programmers to use a safe alternative to the current `extern "platform-intrinsics"` API for writing portable SIMD code. This is `#![feature(portable_simd)]` as tracked in #86656
This commit is contained in:
parent
fdee059c90
commit
39cb863253
@ -386,4 +386,25 @@ pub mod arch {
|
||||
}
|
||||
}
|
||||
|
||||
// Pull in the `core_simd` crate directly into libcore. The contents of
|
||||
// `core_simd` are in a different repository: rust-lang/portable-simd.
|
||||
//
|
||||
// `core_simd` depends on libcore, but the contents of this module are
|
||||
// set up in such a way that directly pulling it here works such that the
|
||||
// crate uses this crate as its libcore.
|
||||
#[path = "../../portable-simd/crates/core_simd/src/mod.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(bootstrap))]
|
||||
mod core_simd;
|
||||
|
||||
#[doc = include_str!("../../portable-simd/crates/core_simd/src/core_simd_docs.md")]
|
||||
#[unstable(feature = "portable_simd", issue = "86656")]
|
||||
#[cfg(not(bootstrap))]
|
||||
pub mod simd {
|
||||
#[unstable(feature = "portable_simd", issue = "86656")]
|
||||
pub use crate::core_simd::simd::*;
|
||||
}
|
||||
|
||||
include!("primitive_docs.rs");
|
||||
|
@ -320,6 +320,7 @@
|
||||
#![feature(panic_internals)]
|
||||
#![feature(panic_unwind)]
|
||||
#![feature(pin_static_ref)]
|
||||
#![cfg_attr(not(bootstrap), feature(portable_simd))]
|
||||
#![feature(prelude_import)]
|
||||
#![feature(ptr_internals)]
|
||||
#![feature(rustc_attrs)]
|
||||
@ -472,6 +473,9 @@
|
||||
pub use core::ptr;
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub use core::result;
|
||||
#[unstable(feature = "portable_simd", issue = "86656")]
|
||||
#[cfg(not(bootstrap))]
|
||||
pub use core::simd;
|
||||
#[unstable(feature = "async_stream", issue = "79024")]
|
||||
pub use core::stream;
|
||||
#[stable(feature = "i128", since = "1.26.0")]
|
||||
|
@ -17,6 +17,7 @@ ignore = [
|
||||
|
||||
# do not format submodules
|
||||
"library/backtrace",
|
||||
"library/portable-simd",
|
||||
"library/stdarch",
|
||||
"compiler/rustc_codegen_cranelift",
|
||||
"compiler/rustc_codegen_gcc",
|
||||
|
@ -4,6 +4,9 @@ error[E0277]: the trait bound `&[i8]: From<&[u8]>` is not satisfied
|
||||
LL | let _: &[i8] = data.into();
|
||||
| ^^^^ the trait `From<&[u8]>` is not implemented for `&[i8]`
|
||||
|
|
||||
= help: the following implementations were found:
|
||||
<[T; LANES] as From<Simd<T, LANES>>>
|
||||
<[bool; LANES] as From<Mask<T, LANES>>>
|
||||
= note: required because of the requirements on the impl of `Into<&[i8]>` for `&[u8]`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
@ -60,6 +60,7 @@ fn filter_dirs(path: &Path) -> bool {
|
||||
"compiler/rustc_codegen_gcc",
|
||||
"src/llvm-project",
|
||||
"library/backtrace",
|
||||
"library/portable-simd",
|
||||
"library/stdarch",
|
||||
"src/tools/cargo",
|
||||
"src/tools/clippy",
|
||||
|
Loading…
Reference in New Issue
Block a user