about summary refs log tree commit diff
diff options
context:
space:
mode:
authorCaleb Zulawski <caleb.zulawski@gmail.com>2023-08-01 07:58:44 -0400
committerCaleb Zulawski <caleb.zulawski@gmail.com>2023-08-01 07:58:44 -0400
commitc948b703ff57f25a1a41be5e03553065454080b9 (patch)
tree7907ed9e8f532f761bc977920b2956be4b54f5e7
parentb1245ffb1277ad4274f600607f9058281baf3bc6 (diff)
downloadrust-c948b703ff57f25a1a41be5e03553065454080b9.tar.gz
rust-c948b703ff57f25a1a41be5e03553065454080b9.zip
Simplify signed leading_ones/trailing_ones
-rw-r--r--crates/core_simd/src/elements/int.rs10
1 files changed, 4 insertions, 6 deletions
diff --git a/crates/core_simd/src/elements/int.rs b/crates/core_simd/src/elements/int.rs
index 6992b679515..e81ed7bf601 100644
--- a/crates/core_simd/src/elements/int.rs
+++ b/crates/core_simd/src/elements/int.rs
@@ -213,7 +213,7 @@ pub trait SimdInt: Copy + Sealed {
 }
 
 macro_rules! impl_trait {
-    { $($ty:ident ($unsigned:ident)),* } => {
+    { $($ty:ty),* } => {
         $(
         impl<const LANES: usize> Sealed for Simd<$ty, LANES>
         where
@@ -353,18 +353,16 @@ macro_rules! impl_trait {
 
             #[inline]
             fn leading_ones(self) -> Self {
-                use crate::simd::SimdUint;
-                self.cast::<$unsigned>().leading_ones().cast()
+                (!self).leading_zeros()
             }
 
             #[inline]
             fn trailing_ones(self) -> Self {
-                use crate::simd::SimdUint;
-                self.cast::<$unsigned>().trailing_ones().cast()
+                (!self).trailing_zeros()
             }
         }
         )*
     }
 }
 
-impl_trait! { i8 (u8), i16 (u16), i32 (u32), i64 (u64), isize (usize) }
+impl_trait! { i8, i16, i32, i64, isize }