diff options
| author | bors <bors@rust-lang.org> | 2018-04-17 03:57:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-04-17 03:57:22 +0000 |
| commit | 186db76159c57f4af442d8aa5e7c1a330ee0004b (patch) | |
| tree | 83a1c14f92519e4bd4748cf4d7bc4ebc982aac28 /src/libsyntax | |
| parent | 94516c5038b1203988a3be1d7912d08a6db86202 (diff) | |
| parent | 1217d70465edb2079880347fea4baaac56895f51 (diff) | |
| download | rust-186db76159c57f4af442d8aa5e7c1a330ee0004b.tar.gz rust-186db76159c57f4af442d8aa5e7c1a330ee0004b.zip | |
Auto merge of #49664 - alexcrichton:stable-simd, r=BurntSushi
Stabilize x86/x86_64 SIMD
This commit stabilizes the SIMD in Rust for the x86/x86_64 platforms. Notably
this commit is stabilizing:
* The `std::arch::{x86, x86_64}` modules and the intrinsics contained inside.
* The `is_x86_feature_detected!` macro in the standard library
* The `#[target_feature(enable = "...")]` attribute
* The `#[cfg(target_feature = "...")]` matcher
Stabilization of the module and intrinsics were primarily done in
rust-lang-nursery/stdsimd#414 and the two attribute stabilizations are done in
this commit. The standard library is also tweaked a bit with the new way that
stdsimd is integrated.
Note that other architectures like `std::arch::arm` are not stabilized as part
of this commit, they will likely stabilize in the future after they've been
implemented and fleshed out. Similarly the `std::simd` module is also not being
stabilized in this commit, only `std::arch`. Finally, nothing related to `__m64`
is stabilized in this commit either (MMX), only SSE and up types and intrinsics
are stabilized.
Closes #29717
Closes #44839
Closes #48556
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index eaa2050f608..7b7cfe5eea0 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -231,9 +231,6 @@ declare_features! ( // allow `repr(simd)`, and importing the various simd intrinsics (active, repr_simd, "1.4.0", Some(27731), None), - // Allows cfg(target_feature = "..."). - (active, cfg_target_feature, "1.4.0", Some(29717), None), - // allow `extern "platform-intrinsic" { ... }` (active, platform_intrinsics, "1.4.0", Some(27731), None), @@ -293,9 +290,6 @@ declare_features! ( (active, use_extern_macros, "1.15.0", Some(35896), None), - // Allows #[target_feature(...)] - (active, target_feature, "1.15.0", None, None), - // `extern "ptx-*" fn()` (active, abi_ptx, "1.15.0", None, None), @@ -446,6 +440,17 @@ declare_features! ( // Allows macro invocations in `extern {}` blocks (active, macros_in_extern, "1.27.0", Some(49476), None), + + // unstable #[target_feature] directives + (active, arm_target_feature, "1.27.0", None, None), + (active, aarch64_target_feature, "1.27.0", None, None), + (active, hexagon_target_feature, "1.27.0", None, None), + (active, powerpc_target_feature, "1.27.0", None, None), + (active, mips_target_feature, "1.27.0", None, None), + (active, avx512_target_feature, "1.27.0", None, None), + (active, mmx_target_feature, "1.27.0", None, None), + (active, sse4a_target_feature, "1.27.0", None, None), + (active, tbm_target_feature, "1.27.0", None, None), ); declare_features! ( @@ -568,6 +573,10 @@ declare_features! ( (accepted, underscore_lifetimes, "1.26.0", Some(44524), None), // Allows attributes on lifetime/type formal parameters in generics (RFC 1327) (accepted, generic_param_attrs, "1.26.0", Some(48848), None), + // Allows cfg(target_feature = "..."). + (accepted, cfg_target_feature, "1.27.0", Some(29717), None), + // Allows #[target_feature(...)] + (accepted, target_feature, "1.27.0", None, None), ); // If you change this, please modify src/doc/unstable-book as well. You must @@ -912,10 +921,7 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG "the `#[naked]` attribute \ is an experimental feature", cfg_fn!(naked_functions))), - ("target_feature", Whitelisted, Gated( - Stability::Unstable, "target_feature", - "the `#[target_feature]` attribute is an experimental feature", - cfg_fn!(target_feature))), + ("target_feature", Normal, Ungated), ("export_name", Whitelisted, Ungated), ("inline", Whitelisted, Ungated), ("link", Whitelisted, Ungated), @@ -1046,7 +1052,6 @@ pub const BUILTIN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeG // cfg(...)'s that are feature gated const GATED_CFGS: &[(&str, &str, fn(&Features) -> bool)] = &[ // (name in cfg, feature, function to check if the feature is enabled) - ("target_feature", "cfg_target_feature", cfg_fn!(cfg_target_feature)), ("target_vendor", "cfg_target_vendor", cfg_fn!(cfg_target_vendor)), ("target_thread_local", "cfg_target_thread_local", cfg_fn!(cfg_target_thread_local)), ("target_has_atomic", "cfg_target_has_atomic", cfg_fn!(cfg_target_has_atomic)), |
