about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSeo Sanghyeon <sanxiyn@gmail.com>2013-05-02 21:33:41 +0900
committerSeo Sanghyeon <sanxiyn@gmail.com>2013-05-07 23:35:33 +0900
commitc5a7be624a85e876ac8dacf0e53d64f0916112d1 (patch)
tree7ee2fdefaf07bcdd3f643c8cea4db58f26d71164
parentf3217a5c9c2e838cacaf68fe9d54230be7faca6c (diff)
downloadrust-c5a7be624a85e876ac8dacf0e53d64f0916112d1.tar.gz
rust-c5a7be624a85e876ac8dacf0e53d64f0916112d1.zip
Add core::simd and define SIMD vector types
-rw-r--r--src/libcore/core.rc1
-rw-r--r--src/libcore/simd.rs43
2 files changed, 44 insertions, 0 deletions
diff --git a/src/libcore/core.rc b/src/libcore/core.rc
index 127d6dbc774..5c05c83e35a 100644
--- a/src/libcore/core.rc
+++ b/src/libcore/core.rc
@@ -164,6 +164,7 @@ pub mod nil;
 pub mod bool;
 pub mod char;
 pub mod tuple;
+pub mod simd;
 
 pub mod vec;
 pub mod at_vec;
diff --git a/src/libcore/simd.rs b/src/libcore/simd.rs
new file mode 100644
index 00000000000..a05f6e8af5a
--- /dev/null
+++ b/src/libcore/simd.rs
@@ -0,0 +1,43 @@
+// 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
+
+#[allow(non_camel_case_types)];
+
+#[simd]
+pub struct i8x16(i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8);
+
+#[simd]
+pub struct i16x8(i16, i16, i16, i16, i16, i16, i16, i16);
+
+#[simd]
+pub struct i32x4(i32, i32, i32, i32);
+
+#[simd]
+pub struct i64x2(i64, i64);
+
+#[simd]
+pub struct u8x16(u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8, u8);
+
+#[simd]
+pub struct u16x8(u16, u16, u16, u16, u16, u16, u16, u16);
+
+#[simd]
+pub struct u32x4(u32, u32, u32, u32);
+
+#[simd]
+pub struct u64x2(u64, u64);
+
+#[simd]
+pub struct f32x4(f32, f32, f32, f32);
+
+#[simd]
+pub struct f64x2(f64, f64);