From f760867e42e6b91e04fa7c8b26bfd7c78414d061 Mon Sep 17 00:00:00 2001 From: ecstatic-morse Date: Thu, 20 Feb 2020 13:42:30 -0800 Subject: [PATCH 1/2] Mark `simd_shuffle` intrinsics as `rustc_args_required_const` This change was made in `stdarch` but not `packed_simd`. See rust-lang/rust#69280 for background. --- src/codegen/llvm.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/codegen/llvm.rs b/src/codegen/llvm.rs index 6ee30c590..93c6ce6b7 100644 --- a/src/codegen/llvm.rs +++ b/src/codegen/llvm.rs @@ -10,31 +10,37 @@ extern "platform-intrinsic" { // FIXME: Passing this intrinsics an `idx` array with an index that is // out-of-bounds will produce a monomorphization-time error. // https://github.com/rust-lang-nursery/packed_simd/issues/21 + #[rustc_args_required_const(2)] pub fn simd_shuffle2(x: T, y: T, idx: [u32; 2]) -> U where T: Simd, ::Element: Shuffle<[u32; 2], Output = U>; + #[rustc_args_required_const(2)] pub fn simd_shuffle4(x: T, y: T, idx: [u32; 4]) -> U where T: Simd, ::Element: Shuffle<[u32; 4], Output = U>; + #[rustc_args_required_const(2)] pub fn simd_shuffle8(x: T, y: T, idx: [u32; 8]) -> U where T: Simd, ::Element: Shuffle<[u32; 8], Output = U>; + #[rustc_args_required_const(2)] pub fn simd_shuffle16(x: T, y: T, idx: [u32; 16]) -> U where T: Simd, ::Element: Shuffle<[u32; 16], Output = U>; + #[rustc_args_required_const(2)] pub fn simd_shuffle32(x: T, y: T, idx: [u32; 32]) -> U where T: Simd, ::Element: Shuffle<[u32; 32], Output = U>; + #[rustc_args_required_const(2)] pub fn simd_shuffle64(x: T, y: T, idx: [u32; 64]) -> U where T: Simd, From 9b7f2933504f9d81e7e366644412101c3c388130 Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Sun, 23 Feb 2020 09:07:20 -0800 Subject: [PATCH 2/2] Add feature `rustc_attrs` --- src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lib.rs b/src/lib.rs index c3da0d3c0..62cae4a56 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -201,6 +201,7 @@ #![feature( repr_simd, + rustc_attrs, const_fn, platform_intrinsics, stdsimd,