about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--crates/core_simd/src/macros.rs2
-rw-r--r--crates/test_helpers/src/lib.rs38
2 files changed, 37 insertions, 3 deletions
diff --git a/crates/core_simd/src/macros.rs b/crates/core_simd/src/macros.rs
index 75104dc50e4..db90c4e3149 100644
--- a/crates/core_simd/src/macros.rs
+++ b/crates/core_simd/src/macros.rs
@@ -141,7 +141,7 @@ macro_rules! impl_vector {
             }
         }
 
-        impl <const LANES: usize> From<$name<LANES>> for [$type; LANES] {
+        impl <const LANES: usize> From<$name<LANES>> for [$type; LANES] where $name<LANES>: crate::LanesAtMost64 {
             fn from(vector: $name<LANES>) -> Self {
                 vector.to_array()
             }
diff --git a/crates/test_helpers/src/lib.rs b/crates/test_helpers/src/lib.rs
index a81713e865b..2c74c02d48a 100644
--- a/crates/test_helpers/src/lib.rs
+++ b/crates/test_helpers/src/lib.rs
@@ -241,7 +241,24 @@ macro_rules! test_lanes {
             mod $test {
                 use super::*;
 
-                fn implementation<const $lanes: usize>() $body
+                fn implementation<const $lanes: usize>()
+                where
+                    core_simd::SimdU8<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU16<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU128<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdUsize<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI8<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI16<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI128<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdIsize<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdF32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdF64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::BitMask<$lanes>: core_simd::LanesAtMost64,
+                $body
 
                 #[cfg(target_arch = "wasm32")]
                 wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
@@ -302,7 +319,24 @@ macro_rules! test_lanes_panic {
             mod $test {
                 use super::*;
 
-                fn implementation<const $lanes: usize>() $body
+                fn implementation<const $lanes: usize>()
+                where
+                    core_simd::SimdU8<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU16<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdU128<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdUsize<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI8<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI16<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdI128<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdIsize<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdF32<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::SimdF64<$lanes>: core_simd::LanesAtMost64,
+                    core_simd::BitMask<$lanes>: core_simd::LanesAtMost64,
+                $body
 
                 #[test]
                 #[should_panic]