Function core::arch::x86_64::_mm256_shuffle_epi8 1.27.0[−][src]
pub unsafe fn _mm256_shuffle_epi8(a: __m256i, b: __m256i) -> __m256i
This is supported on x86-64 and target feature
avx2
only.Expand description
根据 b
的内容,打乱 a
中的字节。
对于 vectors的 128 位低半部分和高半部分中,最后一个
b
的每个字节的 4 位用作 a
相应低 16 字节或高 16 字节的地址。
也就是说,两半分开打乱。
此外,如果设置了 b
字节的最高有效位,则相应的目标字节将设置为 0。
将 a
和 b
描绘为 [u8; 32]
,_mm256_shuffle_epi8
在逻辑上等效于:
fn mm256_shuffle_epi8(a: [u8; 32], b: [u8; 32]) -> [u8; 32] { let mut r = [0; 32]; for i in 0..16 { // 如果设置了 b 的最高有效位,则目标字节设置为 0。 if b[i] & 0x80 == 0u8 { r[i] = a[(b[i] % 16) as usize]; } if b[i + 16] & 0x80 == 0u8 { r[i + 16] = a[(b[i + 16] % 16 + 16) as usize]; } } r }Run