Auto merge of #89541 - workingjubilee:abbrev-shufvec-t, r=Mark-Simulacrum
Cleanup src/test/ui/{simd,simd-intrinsic} Initial motivation was to simplify a huge macro expansion using a tuple, since we can just use an array in `#[repr(simd)]` now for the same result. But also, several tests were going unnoticed during development of SIMD intrinsics because people kept looking in the wrong directory, and many are basically run-pass vs. build-fail versions of the same tests, so let's keep them close together and simplify their names, so they're easier to sift through.
This commit is contained in:
commit
3bf55753c6
@ -1,92 +0,0 @@
|
||||
// build-fail
|
||||
|
||||
// Test that the simd_bitmask intrinsic produces ok-ish error
|
||||
// messages when misused.
|
||||
|
||||
#![feature(repr_simd, platform_intrinsics)]
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct u32x2(pub u32, pub u32);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x8(
|
||||
pub u8, pub u8, pub u8, pub u8, pub u8, pub u8, pub u8, pub u8,
|
||||
);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
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,
|
||||
);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x32(
|
||||
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,
|
||||
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,
|
||||
);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x64(
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
);
|
||||
|
||||
extern "platform-intrinsic" {
|
||||
fn simd_bitmask<T, U>(x: T) -> U;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let m2 = u32x2(0, 0);
|
||||
let m4 = u32x4(0, 0, 0, 0);
|
||||
let m8 = u8x8(0, 0, 0, 0, 0, 0, 0, 0);
|
||||
let m16 = u8x16(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
let m32 = u8x32(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
let m64 = u8x64(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
unsafe {
|
||||
let _: u8 = simd_bitmask(m2);
|
||||
let _: u8 = simd_bitmask(m4);
|
||||
let _: u8 = simd_bitmask(m8);
|
||||
let _: u16 = simd_bitmask(m16);
|
||||
let _: u32 = simd_bitmask(m32);
|
||||
let _: u64 = simd_bitmask(m64);
|
||||
|
||||
let _: u16 = simd_bitmask(m2);
|
||||
//~^ ERROR bitmask `u16`, expected `u8`
|
||||
|
||||
let _: u16 = simd_bitmask(m8);
|
||||
//~^ ERROR bitmask `u16`, expected `u8`
|
||||
|
||||
let _: u32 = simd_bitmask(m16);
|
||||
//~^ ERROR bitmask `u32`, expected `u16`
|
||||
|
||||
let _: u64 = simd_bitmask(m32);
|
||||
//~^ ERROR bitmask `u64`, expected `u32`
|
||||
|
||||
let _: u128 = simd_bitmask(m64);
|
||||
//~^ ERROR bitmask `u128`, expected `u64`
|
||||
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
error: unconstrained generic constant
|
||||
--> $DIR/simd-array-trait.rs:23:23
|
||||
--> $DIR/array-trait.rs:23:23
|
||||
|
|
||||
LL | pub struct T<S: Simd>([S::Lane; S::SIZE]);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
@ -1,89 +1,89 @@
|
||||
error[E0511]: invalid monomorphization of `simd_add` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:69:9
|
||||
--> $DIR/generic-arithmetic-2.rs:69:9
|
||||
|
|
||||
LL | simd_add(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_sub` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:71:9
|
||||
--> $DIR/generic-arithmetic-2.rs:71:9
|
||||
|
|
||||
LL | simd_sub(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_mul` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:73:9
|
||||
--> $DIR/generic-arithmetic-2.rs:73:9
|
||||
|
|
||||
LL | simd_mul(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_div` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:75:9
|
||||
--> $DIR/generic-arithmetic-2.rs:75:9
|
||||
|
|
||||
LL | simd_div(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shl` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:77:9
|
||||
--> $DIR/generic-arithmetic-2.rs:77:9
|
||||
|
|
||||
LL | simd_shl(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shr` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:79:9
|
||||
--> $DIR/generic-arithmetic-2.rs:79:9
|
||||
|
|
||||
LL | simd_shr(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_and` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:81:9
|
||||
--> $DIR/generic-arithmetic-2.rs:81:9
|
||||
|
|
||||
LL | simd_and(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_or` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:83:9
|
||||
--> $DIR/generic-arithmetic-2.rs:83:9
|
||||
|
|
||||
LL | simd_or(0, 0);
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_xor` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:85:9
|
||||
--> $DIR/generic-arithmetic-2.rs:85:9
|
||||
|
|
||||
LL | simd_xor(0, 0);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_neg` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:88:9
|
||||
--> $DIR/generic-arithmetic-2.rs:88:9
|
||||
|
|
||||
LL | simd_neg(0);
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shl` intrinsic: unsupported operation on `f32x4` with element `f32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:92:9
|
||||
--> $DIR/generic-arithmetic-2.rs:92:9
|
||||
|
|
||||
LL | simd_shl(z, z);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shr` intrinsic: unsupported operation on `f32x4` with element `f32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:94:9
|
||||
--> $DIR/generic-arithmetic-2.rs:94:9
|
||||
|
|
||||
LL | simd_shr(z, z);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_and` intrinsic: unsupported operation on `f32x4` with element `f32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:96:9
|
||||
--> $DIR/generic-arithmetic-2.rs:96:9
|
||||
|
|
||||
LL | simd_and(z, z);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_or` intrinsic: unsupported operation on `f32x4` with element `f32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:98:9
|
||||
--> $DIR/generic-arithmetic-2.rs:98:9
|
||||
|
|
||||
LL | simd_or(z, z);
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_xor` intrinsic: unsupported operation on `f32x4` with element `f32`
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic.rs:100:9
|
||||
--> $DIR/generic-arithmetic-2.rs:100:9
|
||||
|
|
||||
LL | simd_xor(z, z);
|
||||
| ^^^^^^^^^^^^^^
|
@ -1,11 +1,11 @@
|
||||
error[E0511]: invalid monomorphization of `simd_saturating_add` intrinsic: expected element type `f32` of vector type `f32x4` to be a signed or unsigned integer type
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:33:9
|
||||
--> $DIR/generic-arithmetic-saturating-2.rs:33:9
|
||||
|
|
||||
LL | simd_saturating_add(z, z);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_saturating_sub` intrinsic: expected element type `f32` of vector type `f32x4` to be a signed or unsigned integer type
|
||||
--> $DIR/simd-intrinsic-generic-arithmetic-saturating.rs:35:9
|
||||
--> $DIR/generic-arithmetic-saturating-2.rs:35:9
|
||||
|
|
||||
LL | simd_saturating_sub(z, z);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
69
src/test/ui/simd/intrinsic/generic-bitmask.rs
Normal file
69
src/test/ui/simd/intrinsic/generic-bitmask.rs
Normal file
@ -0,0 +1,69 @@
|
||||
// build-fail
|
||||
|
||||
// Test that the simd_bitmask intrinsic produces ok-ish error
|
||||
// messages when misused.
|
||||
|
||||
#![feature(repr_simd, platform_intrinsics)]
|
||||
#![allow(non_camel_case_types)]
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct u32x2([u32; 2]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
pub struct u32x4([u32; 4]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x8([u8; 8]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x16([u8; 16]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x32([u8; 32]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x64([u8; 64]);
|
||||
|
||||
extern "platform-intrinsic" {
|
||||
fn simd_bitmask<T, U>(x: T) -> U;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let m2 = u32x2([0; 2]);
|
||||
let m4 = u32x4([0; 4]);
|
||||
let m8 = u8x8([0; 8]);
|
||||
let m16 = u8x16([0; 16]);
|
||||
let m32 = u8x32([0; 32]);
|
||||
let m64 = u8x64([0; 64]);
|
||||
|
||||
unsafe {
|
||||
let _: u8 = simd_bitmask(m2);
|
||||
let _: u8 = simd_bitmask(m4);
|
||||
let _: u8 = simd_bitmask(m8);
|
||||
let _: u16 = simd_bitmask(m16);
|
||||
let _: u32 = simd_bitmask(m32);
|
||||
let _: u64 = simd_bitmask(m64);
|
||||
|
||||
let _: u16 = simd_bitmask(m2);
|
||||
//~^ ERROR bitmask `u16`, expected `u8`
|
||||
|
||||
let _: u16 = simd_bitmask(m8);
|
||||
//~^ ERROR bitmask `u16`, expected `u8`
|
||||
|
||||
let _: u32 = simd_bitmask(m16);
|
||||
//~^ ERROR bitmask `u32`, expected `u16`
|
||||
|
||||
let _: u64 = simd_bitmask(m32);
|
||||
//~^ ERROR bitmask `u64`, expected `u32`
|
||||
|
||||
let _: u128 = simd_bitmask(m64);
|
||||
//~^ ERROR bitmask `u128`, expected `u64`
|
||||
|
||||
}
|
||||
}
|
@ -1,29 +1,29 @@
|
||||
error[E0511]: invalid monomorphization of `simd_bitmask` intrinsic: bitmask `u16`, expected `u8`
|
||||
--> $DIR/simd-intrinsic-generic-bitmask.rs:76:22
|
||||
--> $DIR/generic-bitmask.rs:53:22
|
||||
|
|
||||
LL | let _: u16 = simd_bitmask(m2);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_bitmask` intrinsic: bitmask `u16`, expected `u8`
|
||||
--> $DIR/simd-intrinsic-generic-bitmask.rs:79:22
|
||||
--> $DIR/generic-bitmask.rs:56:22
|
||||
|
|
||||
LL | let _: u16 = simd_bitmask(m8);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_bitmask` intrinsic: bitmask `u32`, expected `u16`
|
||||
--> $DIR/simd-intrinsic-generic-bitmask.rs:82:22
|
||||
--> $DIR/generic-bitmask.rs:59:22
|
||||
|
|
||||
LL | let _: u32 = simd_bitmask(m16);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_bitmask` intrinsic: bitmask `u64`, expected `u32`
|
||||
--> $DIR/simd-intrinsic-generic-bitmask.rs:85:22
|
||||
--> $DIR/generic-bitmask.rs:62:22
|
||||
|
|
||||
LL | let _: u64 = simd_bitmask(m32);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_bitmask` intrinsic: bitmask `u128`, expected `u64`
|
||||
--> $DIR/simd-intrinsic-generic-bitmask.rs:88:23
|
||||
--> $DIR/generic-bitmask.rs:65:23
|
||||
|
|
||||
LL | let _: u128 = simd_bitmask(m64);
|
||||
| ^^^^^^^^^^^^^^^^^
|
@ -1,23 +1,23 @@
|
||||
error[E0511]: invalid monomorphization of `simd_cast` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-cast.rs:34:9
|
||||
--> $DIR/generic-cast.rs:34:9
|
||||
|
|
||||
LL | simd_cast::<i32, i32>(0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_cast` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-cast.rs:36:9
|
||||
--> $DIR/generic-cast.rs:36:9
|
||||
|
|
||||
LL | simd_cast::<i32, i32x4>(0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_cast` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-cast.rs:38:9
|
||||
--> $DIR/generic-cast.rs:38:9
|
||||
|
|
||||
LL | simd_cast::<i32x4, i32>(x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_cast` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i32x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-cast.rs:40:9
|
||||
--> $DIR/generic-cast.rs:40:9
|
||||
|
|
||||
LL | simd_cast::<_, i32x8>(x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
@ -1,107 +1,107 @@
|
||||
error[E0511]: invalid monomorphization of `simd_eq` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:28:9
|
||||
--> $DIR/generic-comparison.rs:28:9
|
||||
|
|
||||
LL | simd_eq::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ne` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:30:9
|
||||
--> $DIR/generic-comparison.rs:30:9
|
||||
|
|
||||
LL | simd_ne::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_lt` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:32:9
|
||||
--> $DIR/generic-comparison.rs:32:9
|
||||
|
|
||||
LL | simd_lt::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_le` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:34:9
|
||||
--> $DIR/generic-comparison.rs:34:9
|
||||
|
|
||||
LL | simd_le::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_gt` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:36:9
|
||||
--> $DIR/generic-comparison.rs:36:9
|
||||
|
|
||||
LL | simd_gt::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ge` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:38:9
|
||||
--> $DIR/generic-comparison.rs:38:9
|
||||
|
|
||||
LL | simd_ge::<i32, i32>(0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_eq` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:41:9
|
||||
--> $DIR/generic-comparison.rs:41:9
|
||||
|
|
||||
LL | simd_eq::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ne` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:43:9
|
||||
--> $DIR/generic-comparison.rs:43:9
|
||||
|
|
||||
LL | simd_ne::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_lt` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:45:9
|
||||
--> $DIR/generic-comparison.rs:45:9
|
||||
|
|
||||
LL | simd_lt::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_le` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:47:9
|
||||
--> $DIR/generic-comparison.rs:47:9
|
||||
|
|
||||
LL | simd_le::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_gt` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:49:9
|
||||
--> $DIR/generic-comparison.rs:49:9
|
||||
|
|
||||
LL | simd_gt::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ge` intrinsic: expected SIMD return type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:51:9
|
||||
--> $DIR/generic-comparison.rs:51:9
|
||||
|
|
||||
LL | simd_ge::<_, i32>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_eq` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:54:9
|
||||
--> $DIR/generic-comparison.rs:54:9
|
||||
|
|
||||
LL | simd_eq::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ne` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:56:9
|
||||
--> $DIR/generic-comparison.rs:56:9
|
||||
|
|
||||
LL | simd_ne::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_lt` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:58:9
|
||||
--> $DIR/generic-comparison.rs:58:9
|
||||
|
|
||||
LL | simd_lt::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_le` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:60:9
|
||||
--> $DIR/generic-comparison.rs:60:9
|
||||
|
|
||||
LL | simd_le::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_gt` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:62:9
|
||||
--> $DIR/generic-comparison.rs:62:9
|
||||
|
|
||||
LL | simd_gt::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_ge` intrinsic: expected return type with length 4 (same as input type `i32x4`), found `i16x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-comparison.rs:64:9
|
||||
--> $DIR/generic-comparison.rs:64:9
|
||||
|
|
||||
LL | simd_ge::<_, i16x8>(x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
@ -1,71 +1,71 @@
|
||||
error[E0511]: invalid monomorphization of `simd_insert` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:46:9
|
||||
--> $DIR/generic-elements.rs:46:9
|
||||
|
|
||||
LL | simd_insert(0, 0, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_insert` intrinsic: expected inserted type `i32` (element of input `i32x4`), found `f64`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:48:9
|
||||
--> $DIR/generic-elements.rs:48:9
|
||||
|
|
||||
LL | simd_insert(x, 0, 1.0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_extract` intrinsic: expected return type `i32` (element of input `i32x4`), found `f32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:50:9
|
||||
--> $DIR/generic-elements.rs:50:9
|
||||
|
|
||||
LL | simd_extract::<_, f32>(x, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle2` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:54:9
|
||||
--> $DIR/generic-elements.rs:54:9
|
||||
|
|
||||
LL | simd_shuffle2::<i32, i32>(0, 0, IDX2);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle4` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:57:9
|
||||
--> $DIR/generic-elements.rs:57:9
|
||||
|
|
||||
LL | simd_shuffle4::<i32, i32>(0, 0, IDX4);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle8` intrinsic: expected SIMD input type, found non-SIMD `i32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:60:9
|
||||
--> $DIR/generic-elements.rs:60:9
|
||||
|
|
||||
LL | simd_shuffle8::<i32, i32>(0, 0, IDX8);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle2` intrinsic: expected return element type `i32` (element of input `i32x4`), found `f32x2` with element type `f32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:63:9
|
||||
--> $DIR/generic-elements.rs:63:9
|
||||
|
|
||||
LL | simd_shuffle2::<_, f32x2>(x, x, IDX2);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle4` intrinsic: expected return element type `i32` (element of input `i32x4`), found `f32x4` with element type `f32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:65:9
|
||||
--> $DIR/generic-elements.rs:65:9
|
||||
|
|
||||
LL | simd_shuffle4::<_, f32x4>(x, x, IDX4);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle8` intrinsic: expected return element type `i32` (element of input `i32x4`), found `f32x8` with element type `f32`
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:67:9
|
||||
--> $DIR/generic-elements.rs:67:9
|
||||
|
|
||||
LL | simd_shuffle8::<_, f32x8>(x, x, IDX8);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle2` intrinsic: expected return type of length 2, found `i32x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:70:9
|
||||
--> $DIR/generic-elements.rs:70:9
|
||||
|
|
||||
LL | simd_shuffle2::<_, i32x8>(x, x, IDX2);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle4` intrinsic: expected return type of length 4, found `i32x8` with length 8
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:72:9
|
||||
--> $DIR/generic-elements.rs:72:9
|
||||
|
|
||||
LL | simd_shuffle4::<_, i32x8>(x, x, IDX4);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle8` intrinsic: expected return type of length 8, found `i32x2` with length 2
|
||||
--> $DIR/simd-intrinsic-generic-elements.rs:74:9
|
||||
--> $DIR/generic-elements.rs:74:9
|
||||
|
|
||||
LL | simd_shuffle8::<_, i32x2>(x, x, IDX8);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
@ -24,15 +24,6 @@
|
||||
#[derive(Copy, Clone)]
|
||||
struct b8x4(pub i8, pub i8, pub i8, pub i8);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct b8x16(
|
||||
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
|
||||
);
|
||||
|
||||
extern "platform-intrinsic" {
|
||||
fn simd_reduce_add_unordered<T, U>(x: T) -> U;
|
||||
fn simd_reduce_mul_unordered<T, U>(x: T) -> U;
|
@ -1,59 +1,59 @@
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_add_ordered` intrinsic: expected return type `f32` (element of input `f32x4`), found `i32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:34:9
|
||||
--> $DIR/generic-reduction.rs:34:9
|
||||
|
|
||||
LL | simd_reduce_add_ordered(z, 0);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_mul_ordered` intrinsic: expected return type `f32` (element of input `f32x4`), found `i32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:36:9
|
||||
--> $DIR/generic-reduction.rs:36:9
|
||||
|
|
||||
LL | simd_reduce_mul_ordered(z, 1);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_and` intrinsic: expected return type `u32` (element of input `u32x4`), found `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:39:22
|
||||
--> $DIR/generic-reduction.rs:39:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_and(x);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_or` intrinsic: expected return type `u32` (element of input `u32x4`), found `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:41:22
|
||||
--> $DIR/generic-reduction.rs:41:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_or(x);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_xor` intrinsic: expected return type `u32` (element of input `u32x4`), found `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:43:22
|
||||
--> $DIR/generic-reduction.rs:43:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_xor(x);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_and` intrinsic: unsupported simd_reduce_and from `f32x4` with element `f32` to `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:46:22
|
||||
--> $DIR/generic-reduction.rs:46:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_and(z);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_or` intrinsic: unsupported simd_reduce_or from `f32x4` with element `f32` to `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:48:22
|
||||
--> $DIR/generic-reduction.rs:48:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_or(z);
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_xor` intrinsic: unsupported simd_reduce_xor from `f32x4` with element `f32` to `f32`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:50:22
|
||||
--> $DIR/generic-reduction.rs:50:22
|
||||
|
|
||||
LL | let _: f32 = simd_reduce_xor(z);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_all` intrinsic: unsupported simd_reduce_all from `f32x4` with element `f32` to `bool`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:53:23
|
||||
--> $DIR/generic-reduction.rs:53:23
|
||||
|
|
||||
LL | let _: bool = simd_reduce_all(z);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_reduce_any` intrinsic: unsupported simd_reduce_any from `f32x4` with element `f32` to `bool`
|
||||
--> $DIR/simd-intrinsic-generic-reduction.rs:55:23
|
||||
--> $DIR/generic-reduction.rs:55:23
|
||||
|
|
||||
LL | let _: bool = simd_reduce_any(z);
|
||||
| ^^^^^^^^^^^^^^^^^^
|
@ -1,47 +1,47 @@
|
||||
error[E0511]: invalid monomorphization of `simd_select` intrinsic: mismatched lengths: mask length `8` != other vector length `4`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:40:9
|
||||
--> $DIR/generic-select.rs:40:9
|
||||
|
|
||||
LL | simd_select(m8, x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select` intrinsic: mask element type is `u32`, expected `i_`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:43:9
|
||||
--> $DIR/generic-select.rs:43:9
|
||||
|
|
||||
LL | simd_select(x, x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select` intrinsic: mask element type is `f32`, expected `i_`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:46:9
|
||||
--> $DIR/generic-select.rs:46:9
|
||||
|
|
||||
LL | simd_select(z, z, z);
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select` intrinsic: expected SIMD argument type, found non-SIMD `u32`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:49:9
|
||||
--> $DIR/generic-select.rs:49:9
|
||||
|
|
||||
LL | simd_select(m4, 0u32, 1u32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select_bitmask` intrinsic: mismatched lengths: mask length `16` != other vector length `4`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:52:9
|
||||
--> $DIR/generic-select.rs:52:9
|
||||
|
|
||||
LL | simd_select_bitmask(0u16, x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select_bitmask` intrinsic: expected SIMD argument type, found non-SIMD `u32`
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:55:9
|
||||
--> $DIR/generic-select.rs:55:9
|
||||
|
|
||||
LL | simd_select_bitmask(0u8, 1u32, 2u32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select_bitmask` intrinsic: `f32` is not an integral type
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:58:9
|
||||
--> $DIR/generic-select.rs:58:9
|
||||
|
|
||||
LL | simd_select_bitmask(0.0f32, x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_select_bitmask` intrinsic: `&str` is not an integral type
|
||||
--> $DIR/simd-intrinsic-generic-select.rs:61:9
|
||||
--> $DIR/generic-select.rs:61:9
|
||||
|
|
||||
LL | simd_select_bitmask("x", x, x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
@ -1,17 +1,17 @@
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle` intrinsic: expected return type of length 2, found `Simd<u32, 4_usize>` with length 4
|
||||
--> $DIR/simd-intrinsic-generic-shuffle.rs:24:31
|
||||
--> $DIR/generic-shuffle.rs:24:31
|
||||
|
|
||||
LL | let _: Simd<u32, 4> = simd_shuffle(v, v, I);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle` intrinsic: expected return element type `u32` (element of input `Simd<u32, 4_usize>`), found `Simd<f32, 2_usize>` with element type `f32`
|
||||
--> $DIR/simd-intrinsic-generic-shuffle.rs:27:31
|
||||
--> $DIR/generic-shuffle.rs:27:31
|
||||
|
|
||||
LL | let _: Simd<f32, 2> = simd_shuffle(v, v, I);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle` intrinsic: simd_shuffle index must be an array of `u32`, got `[f32; 2]`
|
||||
--> $DIR/simd-intrinsic-generic-shuffle.rs:30:31
|
||||
--> $DIR/generic-shuffle.rs:30:31
|
||||
|
|
||||
LL | let _: Simd<u32, 2> = simd_shuffle(v, v, I2);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
@ -6,148 +6,42 @@
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x2(u8, u8);
|
||||
struct u8x2([u8; 2]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x4(u8, u8, u8, u8);
|
||||
struct u8x4([u8; 4]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x8(u8, u8, u8, u8, u8, u8, u8, u8);
|
||||
struct u8x8([u8; 8]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x16(
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
);
|
||||
struct u8x16([u8; 16]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x32(
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
);
|
||||
struct u8x32([u8; 32]);
|
||||
|
||||
#[repr(simd)]
|
||||
#[derive(Copy, Clone)]
|
||||
struct u8x64(
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
u8,
|
||||
);
|
||||
struct u8x64([u8; 64]);
|
||||
|
||||
extern "platform-intrinsic" {
|
||||
pub fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U;
|
||||
pub fn simd_shuffle4<T, U>(x: T, y: T, idx: [u32; 4]) -> U;
|
||||
pub fn simd_shuffle8<T, U>(x: T, y: T, idx: [u32; 8]) -> U;
|
||||
pub fn simd_shuffle16<T, U>(x: T, y: T, idx: [u32; 16]) -> U;
|
||||
pub fn simd_shuffle32<T, U>(x: T, y: T, idx: [u32; 32]) -> U;
|
||||
pub fn simd_shuffle64<T, U>(x: T, y: T, idx: [u32; 64]) -> U;
|
||||
}
|
||||
|
||||
// Test vectors by lane size. Since LLVM does not distinguish between a shuffle
|
||||
// over two f32s and a shuffle over two u64s, or any other such combination,
|
||||
// it is not necessary to test every possible vector, only lane counts.
|
||||
macro_rules! test_shuffle_lanes {
|
||||
($n:literal, $x:ident, $y:ident, $t:tt) => {
|
||||
($n:literal, $x:ident, $y:ident) => {
|
||||
unsafe {
|
||||
let shuffle: $x = {
|
||||
const ARR: [u32; $n] = {
|
||||
@ -155,11 +49,10 @@ macro_rules! test_shuffle_lanes {
|
||||
arr[0] = $n * 2;
|
||||
arr
|
||||
};
|
||||
extern "platform-intrinsic" {
|
||||
pub fn $y<T, U>(x: T, y: T, idx: [u32; $n]) -> U;
|
||||
}
|
||||
let vec1 = $x$t;
|
||||
let vec2 = $x$t;
|
||||
let mut n: u8 = $n;
|
||||
let vals = [0; $n].map(|_| { n = n - 1; n });
|
||||
let vec1 = $x(vals);
|
||||
let vec2 = $x(vals);
|
||||
$y(vec1, vec2, ARR)
|
||||
};
|
||||
}
|
||||
@ -175,24 +68,17 @@ macro_rules! test_shuffle_lanes {
|
||||
// And unfortunately, standard comments, as in the UI test harness, disappear in macros!
|
||||
|
||||
fn main() {
|
||||
test_shuffle_lanes!(2, u8x2, simd_shuffle2, (2, 1));
|
||||
test_shuffle_lanes!(4, u8x4, simd_shuffle4, (4, 3, 2, 1));
|
||||
test_shuffle_lanes!(8, u8x8, simd_shuffle8, (8, 7, 6, 5, 4, 3, 2, 1));
|
||||
test_shuffle_lanes!(16, u8x16, simd_shuffle16,
|
||||
(16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
test_shuffle_lanes!(32, u8x32, simd_shuffle32,
|
||||
(32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
|
||||
15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
test_shuffle_lanes!(64, u8x64, simd_shuffle64,
|
||||
(64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
|
||||
48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
|
||||
32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
||||
16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
test_shuffle_lanes!(2, u8x2, simd_shuffle2);
|
||||
test_shuffle_lanes!(4, u8x4, simd_shuffle4);
|
||||
test_shuffle_lanes!(8, u8x8, simd_shuffle8);
|
||||
test_shuffle_lanes!(16, u8x16, simd_shuffle16);
|
||||
test_shuffle_lanes!(32, u8x32, simd_shuffle32);
|
||||
test_shuffle_lanes!(64, u8x64, simd_shuffle64);
|
||||
|
||||
extern "platform-intrinsic" {
|
||||
fn simd_shuffle<T, I, U>(a: T, b: T, i: I) -> U;
|
||||
}
|
||||
let v = u8x2(0, 0);
|
||||
let v = u8x2([0, 0]);
|
||||
const I: [u32; 2] = [4, 4];
|
||||
unsafe {
|
||||
let _: u8x2 = simd_shuffle(v, v, I);
|
||||
|
@ -1,78 +1,71 @@
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle2` intrinsic: shuffle index #0 is out of bounds (limit 4)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | test_shuffle_lanes!(2, u8x2, simd_shuffle2, (2, 1));
|
||||
| ---------------------------------------------------- in this macro invocation
|
||||
LL | test_shuffle_lanes!(2, u8x2, simd_shuffle2);
|
||||
| -------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle4` intrinsic: shuffle index #0 is out of bounds (limit 8)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | test_shuffle_lanes!(4, u8x4, simd_shuffle4, (4, 3, 2, 1));
|
||||
| ---------------------------------------------------------- in this macro invocation
|
||||
LL | test_shuffle_lanes!(4, u8x4, simd_shuffle4);
|
||||
| -------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle8` intrinsic: shuffle index #0 is out of bounds (limit 16)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | test_shuffle_lanes!(8, u8x8, simd_shuffle8, (8, 7, 6, 5, 4, 3, 2, 1));
|
||||
| ---------------------------------------------------------------------- in this macro invocation
|
||||
LL | test_shuffle_lanes!(8, u8x8, simd_shuffle8);
|
||||
| -------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle16` intrinsic: shuffle index #0 is out of bounds (limit 32)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | / test_shuffle_lanes!(16, u8x16, simd_shuffle16,
|
||||
LL | | (16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
| |_________________________________________________________________- in this macro invocation
|
||||
LL | test_shuffle_lanes!(16, u8x16, simd_shuffle16);
|
||||
| ----------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle32` intrinsic: shuffle index #0 is out of bounds (limit 64)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | / test_shuffle_lanes!(32, u8x32, simd_shuffle32,
|
||||
LL | | (32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16,
|
||||
LL | | 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
| |_____________________________________________________________- in this macro invocation
|
||||
LL | test_shuffle_lanes!(32, u8x32, simd_shuffle32);
|
||||
| ----------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle64` intrinsic: shuffle index #0 is out of bounds (limit 128)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:163:21
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:56:21
|
||||
|
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
LL | $y(vec1, vec2, ARR)
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
...
|
||||
LL | / test_shuffle_lanes!(64, u8x64, simd_shuffle64,
|
||||
LL | | (64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49,
|
||||
LL | | 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33,
|
||||
LL | | 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17,
|
||||
LL | | 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1));
|
||||
| |_________________________________________________________________- in this macro invocation
|
||||
LL | test_shuffle_lanes!(64, u8x64, simd_shuffle64);
|
||||
| ----------------------------------------------- in this macro invocation
|
||||
|
|
||||
= note: this error originates in the macro `test_shuffle_lanes` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||
|
||||
error[E0511]: invalid monomorphization of `simd_shuffle` intrinsic: shuffle index #0 is out of bounds (limit 4)
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:198:23
|
||||
--> $DIR/shuffle-not-out-of-bounds.rs:84:23
|
||||
|
|
||||
LL | let _: u8x2 = simd_shuffle(v, v, I);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -1,35 +1,35 @@
|
||||
error[E0075]: SIMD vector cannot be empty
|
||||
--> $DIR/simd-type.rs:6:1
|
||||
--> $DIR/type-len.rs:6:1
|
||||
|
|
||||
LL | struct empty;
|
||||
| ^^^^^^^^^^^^^
|
||||
|
||||
error[E0075]: SIMD vector cannot be empty
|
||||
--> $DIR/simd-type.rs:9:1
|
||||
--> $DIR/type-len.rs:9:1
|
||||
|
|
||||
LL | struct empty2([f32; 0]);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0076]: SIMD vector should be homogeneous
|
||||
--> $DIR/simd-type.rs:15:1
|
||||
--> $DIR/type-len.rs:15:1
|
||||
|
|
||||
LL | struct i64f64(i64, f64);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ SIMD elements must have the same type
|
||||
|
||||
error[E0077]: SIMD vector element type should be a primitive scalar (integer/float/pointer) type
|
||||
--> $DIR/simd-type.rs:20:1
|
||||
--> $DIR/type-len.rs:20:1
|
||||
|
|
||||
LL | struct FooV(Foo, Foo);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0077]: SIMD vector element type should be a primitive scalar (integer/float/pointer) type
|
||||
--> $DIR/simd-type.rs:23:1
|
||||
--> $DIR/type-len.rs:23:1
|
||||
|
|
||||
LL | struct FooV2([Foo; 2]);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0075]: SIMD vector cannot have more than 32768 elements
|
||||
--> $DIR/simd-type.rs:26:1
|
||||
--> $DIR/type-len.rs:26:1
|
||||
|
|
||||
LL | struct TooBig([f32; 65536]);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Loading…
Reference in New Issue
Block a user