Function core::arch::x86::_mm_shuffle_epi81.27.0[][src]

pub unsafe fn _mm_shuffle_epi8(a: __m128i, b: __m128i) -> __m128i
This is supported on x86 and target feature ssse3 only.
Expand description

根据 b 的内容,打乱 a 中的字节。

b 的每个字节的后 4 位用作 a 的 16 个字节的地址。

此外,如果设置了 b 字节的最高有效位,则相应的目标字节将设置为 0。

ab 描绘为 [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

Intel’s documentation