diff --git a/src/implementation/aarch64/neon.rs b/src/implementation/aarch64/neon.rs index c629c042..5f94a314 100644 --- a/src/implementation/aarch64/neon.rs +++ b/src/implementation/aarch64/neon.rs @@ -82,19 +82,7 @@ impl SimdU8Value { #[inline] unsafe fn load_from(ptr: *const u8) -> Self { - // WORKAROUND for https://github.com/rust-lang/stdarch/issues/1148 - // The vld1q_u8 intrinsic is currently broken, it treats it as individual - // byte loads so the compiler sometimes decides it is a better to load - // individual bytes to "optimize" a subsequent SIMD shuffle - // - // This code forces a full 128-bit load. - let mut dst = core::mem::MaybeUninit::::uninit(); - core::ptr::copy_nonoverlapping( - ptr.cast::(), - dst.as_mut_ptr().cast::(), - core::mem::size_of::(), - ); - Self::from(dst.assume_init()) + Self::from(vld1q_u8(ptr)) } #[inline]