1.27.0[−][src]Function core_arch::x86::_mm_shuffle_epi8
pub unsafe fn _mm_shuffle_epi8(a: __m128i, b: __m128i) -> __m128i
This is supported on x86 and target feature
ssse3
only.Shuffles bytes from a
according to the content of b
.
The last 4 bits of each byte of b
are used as addresses
into the 16 bytes of a
.
In addition, if the highest significant bit of a byte of b
is set, the respective destination byte is set to 0.
Picturing a
and b
as [u8; 16]
, _mm_shuffle_epi8
is
logically equivalent to:
fn mm_shuffle_epi8(a: [u8; 16], b: [u8; 16]) -> [u8; 16] { let mut r = [0u8; 16]; for i in 0..16 { // if the most significant bit of b is set, // then the destination byte is set to 0. if b[i] & 0x80 == 0u8 { r[i] = a[(b[i] % 16) as usize]; } } r }