-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
auto merge of #6214 : sanxiyn/rust/simd-2, r=graydon
At the moment this only includes type checking and there is no code generation support yet. I wanted to get the design reviewed first. From discussion with @graydon at #5841, re-implemented as `#[simd]` attribute on structs. Progressing towards #3499.
- Loading branch information
Showing
9 changed files
with
193 additions
and
24 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#[simd] | ||
struct vec4<T>(T, T, T, T); //~ ERROR SIMD vector cannot be generic | ||
|
||
#[simd] | ||
struct empty; //~ ERROR SIMD vector cannot be empty | ||
|
||
#[simd] | ||
struct i64f64(i64, f64); //~ ERROR SIMD vector should be homogeneous | ||
|
||
#[simd] | ||
struct int4(int, int, int, int); //~ ERROR SIMD vector element type should be machine type | ||
|
||
fn main() {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#[simd] | ||
struct RGBA { | ||
r: f32, | ||
g: f32, | ||
b: f32, | ||
a: f32 | ||
} | ||
|
||
fn main() {} |