#[inline]
#[cfg(feature = "simd")]
#[cfg(any(target_arch = "aarch64", target_arch = "arm"))]
pub(crate) unsafe fn _mm_movemask_epi8(input: uint8x16_t) -> i32 {
let high_bits = vreinterpretq_u16_u8(vshrq_n_u8::<7>(input));
let paired16 = vreinterpretq_u32_u16(vsraq_n_u16::<7>(high_bits, high_bits));
let paired32 = vreinterpretq_u64_u32(vsraq_n_u32::<14>(paired16, paired16));
let paired64 = vreinterpretq_u8_u64(vsraq_n_u64::<28>(paired32, paired32));
vgetq_lane_u8::<0>(paired64) as i32 | (vgetq_lane_u8::<8>(paired64) as i32) << 8
}