Skip to content

Commit 708ae61

Browse files
committed
Remove scalar Sum/Product over questionable order of operations
1 parent 7b66032 commit 708ae61

File tree

1 file changed

+13
-49
lines changed

1 file changed

+13
-49
lines changed

crates/core_simd/src/iter.rs

Lines changed: 13 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
macro_rules! impl_traits {
2-
{ $type:ident, $scalar:ty } => {
2+
{ $type:ident } => {
33
impl<const LANES: usize> core::iter::Sum<Self> for crate::$type<LANES>
44
where
55
Self: crate::LanesAtMost32,
@@ -18,24 +18,6 @@ macro_rules! impl_traits {
1818
}
1919
}
2020

21-
impl<const LANES: usize> core::iter::Sum<crate::$type<LANES>> for $scalar
22-
where
23-
crate::$type<LANES>: crate::LanesAtMost32,
24-
{
25-
fn sum<I: core::iter::Iterator<Item = crate::$type<LANES>>>(iter: I) -> Self {
26-
iter.sum::<crate::$type<LANES>>().horizontal_sum()
27-
}
28-
}
29-
30-
impl<const LANES: usize> core::iter::Product<crate::$type<LANES>> for $scalar
31-
where
32-
crate::$type<LANES>: crate::LanesAtMost32,
33-
{
34-
fn product<I: core::iter::Iterator<Item = crate::$type<LANES>>>(iter: I) -> Self {
35-
iter.product::<crate::$type<LANES>>().horizontal_product()
36-
}
37-
}
38-
3921
impl<'a, const LANES: usize> core::iter::Sum<&'a Self> for crate::$type<LANES>
4022
where
4123
Self: crate::LanesAtMost32,
@@ -53,36 +35,18 @@ macro_rules! impl_traits {
5335
iter.fold(Default::default(), core::ops::Mul::mul)
5436
}
5537
}
56-
57-
impl<'a, const LANES: usize> core::iter::Sum<&'a crate::$type<LANES>> for $scalar
58-
where
59-
crate::$type<LANES>: crate::LanesAtMost32,
60-
{
61-
fn sum<I: core::iter::Iterator<Item = &'a crate::$type<LANES>>>(iter: I) -> Self {
62-
iter.sum::<crate::$type<LANES>>().horizontal_sum()
63-
}
64-
}
65-
66-
impl<'a, const LANES: usize> core::iter::Product<&'a crate::$type<LANES>> for $scalar
67-
where
68-
crate::$type<LANES>: crate::LanesAtMost32,
69-
{
70-
fn product<I: core::iter::Iterator<Item = &'a crate::$type<LANES>>>(iter: I) -> Self {
71-
iter.product::<crate::$type<LANES>>().horizontal_product()
72-
}
73-
}
7438
}
7539
}
7640

77-
impl_traits! { SimdF32, f32 }
78-
impl_traits! { SimdF64, f64 }
79-
impl_traits! { SimdU8, u8 }
80-
impl_traits! { SimdU16, u16 }
81-
impl_traits! { SimdU32, u32 }
82-
impl_traits! { SimdU64, u64 }
83-
impl_traits! { SimdUsize, usize }
84-
impl_traits! { SimdI8, i8 }
85-
impl_traits! { SimdI16, i16 }
86-
impl_traits! { SimdI32, i32 }
87-
impl_traits! { SimdI64, i64 }
88-
impl_traits! { SimdIsize, isize }
41+
impl_traits! { SimdF32 }
42+
impl_traits! { SimdF64 }
43+
impl_traits! { SimdU8 }
44+
impl_traits! { SimdU16 }
45+
impl_traits! { SimdU32 }
46+
impl_traits! { SimdU64 }
47+
impl_traits! { SimdUsize }
48+
impl_traits! { SimdI8 }
49+
impl_traits! { SimdI16 }
50+
impl_traits! { SimdI32 }
51+
impl_traits! { SimdI64 }
52+
impl_traits! { SimdIsize }

0 commit comments

Comments
 (0)