Function core::arch::x86_64::_mm_shuffle_epi8
1.27.0 · source · pub unsafe fn _mm_shuffle_epi8(a: __m128i, b: __m128i) -> __m128i
Available on (x86 or x86-64) and target feature
ssse3
and x86-64 only.Expand description
根据 b
的内容,打乱 a
中的字节。
b
的每个字节的后 4 位用作 a
的 16 个字节的地址。
此外,如果 b
的一个字节的最高有效位被设置,相应的目标字节被设置为 0.
将 a
和 b
描绘为 [u8; 16]
,_mm_shuffle_epi8
在逻辑上等效于:
fn mm_shuffle_epi8(a: [u8; 16], b: [u8; 16]) -> [u8; 16] {
let mut r = [0u8; 16];
for i in 0..16 {
// 如果设置了 b 的最高有效位,则目标字节设置为 0.
if b[i] & 0x80 == 0u8 {
r[i] = a[(b[i] % 16) as usize];
}
}
r
}
Run