switch core::simd to repr(simd) and deprecate it.
This functionality will be available out of tree in the `simd` crate on crates.io. [breaking-change]
This commit is contained in:
parent
c8b6d5b23c
commit
c66554cab3
@ -78,7 +78,8 @@
|
||||
#![feature(optin_builtin_traits)]
|
||||
#![feature(reflect)]
|
||||
#![feature(rustc_attrs)]
|
||||
#![feature(simd)]
|
||||
#![cfg_attr(stage0, feature(simd))]
|
||||
#![cfg_attr(not(stage0), feature(simd_basics))]
|
||||
#![feature(staged_api)]
|
||||
#![feature(unboxed_closures)]
|
||||
|
||||
@ -150,7 +151,13 @@ pub mod iter;
|
||||
pub mod option;
|
||||
pub mod raw;
|
||||
pub mod result;
|
||||
|
||||
#[cfg(stage0)]
|
||||
#[path = "simd_old.rs"]
|
||||
pub mod simd;
|
||||
#[cfg(not(stage0))]
|
||||
pub mod simd;
|
||||
|
||||
pub mod slice;
|
||||
pub mod str;
|
||||
pub mod hash;
|
||||
|
@ -37,11 +37,14 @@
|
||||
#![unstable(feature = "core_simd",
|
||||
reason = "needs an RFC to flesh out the design",
|
||||
issue = "27731")]
|
||||
#![deprecated(since = "1.3.0",
|
||||
reason = "use the external `simd` crate instead")]
|
||||
|
||||
#![allow(non_camel_case_types)]
|
||||
#![allow(missing_docs)]
|
||||
#![allow(deprecated)]
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i8x16(pub i8, pub i8, pub i8, pub i8,
|
||||
@ -49,23 +52,23 @@ pub struct i8x16(pub i8, pub i8, pub i8, pub i8,
|
||||
pub i8, pub i8, pub i8, pub i8,
|
||||
pub i8, pub i8, pub i8, pub i8);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i16x8(pub i16, pub i16, pub i16, pub i16,
|
||||
pub i16, pub i16, pub i16, pub i16);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i32x4(pub i32, pub i32, pub i32, pub i32);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i64x2(pub i64, pub i64);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u8x16(pub u8, pub u8, pub u8, pub u8,
|
||||
@ -73,28 +76,28 @@ pub struct u8x16(pub u8, pub u8, pub u8, pub u8,
|
||||
pub u8, pub u8, pub u8, pub u8,
|
||||
pub u8, pub u8, pub u8, pub u8);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u16x8(pub u16, pub u16, pub u16, pub u16,
|
||||
pub u16, pub u16, pub u16, pub u16);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u64x2(pub u64, pub u64);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct f32x4(pub f32, pub f32, pub f32, pub f32);
|
||||
|
||||
#[simd]
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct f64x2(pub f64, pub f64);
|
||||
|
98
src/libcore/simd_old.rs
Normal file
98
src/libcore/simd_old.rs
Normal file
@ -0,0 +1,98 @@
|
||||
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
//! SIMD vectors.
|
||||
//!
|
||||
//! These types can be used for accessing basic SIMD operations. Each of them
|
||||
//! implements the standard arithmetic operator traits (Add, Sub, Mul, Div,
|
||||
//! Rem, Shl, Shr) through compiler magic, rather than explicitly. Currently
|
||||
//! comparison operators are not implemented. To use SSE3+, you must enable
|
||||
//! the features, like `-C target-feature=sse3,sse4.1,sse4.2`, or a more
|
||||
//! specific `target-cpu`. No other SIMD intrinsics or high-level wrappers are
|
||||
//! provided beyond this module.
|
||||
//!
|
||||
//! ```rust
|
||||
//! # #![feature(core_simd)]
|
||||
//! fn main() {
|
||||
//! use std::simd::f32x4;
|
||||
//! let a = f32x4(40.0, 41.0, 42.0, 43.0);
|
||||
//! let b = f32x4(1.0, 1.1, 3.4, 9.8);
|
||||
//! println!("{:?}", a + b);
|
||||
//! }
|
||||
//! ```
|
||||
//!
|
||||
//! # Stability Note
|
||||
//!
|
||||
//! These are all experimental. The interface may change entirely, without
|
||||
//! warning.
|
||||
|
||||
#![unstable(feature = "core_simd",
|
||||
reason = "needs an RFC to flesh out the design")]
|
||||
|
||||
#![allow(non_camel_case_types)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i8x16(pub i8, pub i8, pub i8, pub i8,
|
||||
pub i8, pub i8, pub i8, pub i8,
|
||||
pub i8, pub i8, pub i8, pub i8,
|
||||
pub i8, pub i8, pub i8, pub i8);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i16x8(pub i16, pub i16, pub i16, pub i16,
|
||||
pub i16, pub i16, pub i16, pub i16);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i32x4(pub i32, pub i32, pub i32, pub i32);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct i64x2(pub i64, pub i64);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u8x16(pub u8, pub u8, pub u8, pub u8,
|
||||
pub u8, pub u8, pub u8, pub u8,
|
||||
pub u8, pub u8, pub u8, pub u8,
|
||||
pub u8, pub u8, pub u8, pub u8);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u16x8(pub u16, pub u16, pub u16, pub u16,
|
||||
pub u16, pub u16, pub u16, pub u16);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct u64x2(pub u64, pub u64);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct f32x4(pub f32, pub f32, pub f32, pub f32);
|
||||
|
||||
#[simd]
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
#[repr(C)]
|
||||
pub struct f64x2(pub f64, pub f64);
|
@ -294,6 +294,7 @@ pub use core::mem;
|
||||
pub use core::ops;
|
||||
pub use core::ptr;
|
||||
pub use core::raw;
|
||||
#[allow(deprecated)]
|
||||
pub use core::simd;
|
||||
pub use core::result;
|
||||
pub use core::option;
|
||||
|
@ -21,7 +21,6 @@ use self::EXCEPTION_DISPOSITION::*;
|
||||
use rt::dwarf::eh;
|
||||
use core::mem;
|
||||
use core::ptr;
|
||||
use simd;
|
||||
use libc::{c_void, c_ulonglong, DWORD, LPVOID};
|
||||
type ULONG_PTR = c_ulonglong;
|
||||
|
||||
|
@ -194,6 +194,8 @@ mod arch {
|
||||
|
||||
#[cfg(target_arch = "x86_64")]
|
||||
mod arch {
|
||||
#![allow(deprecated)]
|
||||
|
||||
use libc::{c_longlong, c_ulonglong};
|
||||
use libc::types::os::arch::extra::{WORD, DWORD, DWORDLONG};
|
||||
use simd;
|
||||
|
Loading…
x
Reference in New Issue
Block a user