diff --git a/src/u32x4_.rs b/src/u32x4_.rs index 7f0229d..dbdb48a 100644 --- a/src/u32x4_.rs +++ b/src/u32x4_.rs @@ -458,7 +458,10 @@ impl u32x4 { u64x2 { simd: i64x2_mul((self & i64x2::splat(0xffffffff)).simd, (rhs.simd & i64x2::splat(0xffffffff))).simd } } else if #[cfg(all(target_feature="neon",target_arch="aarch64"))] { unsafe { - u64x2 { neon: vmull_u32(vget_low_u32(self.neon), vget_low_u32(rhs.neon)) } + let a = vuzpq_u32(self.neon, self.neon); + let b = vuzpq_u32(rhs.neon, rhs.neon); + + u64x2 { neon: vmull_u32(vget_low_u32(a), vget_low_u32(b)) } } } else { let a: [u32; 4] = cast(self);