[][src]Macro safe_arch::shuffle_abi_f128z_all_m256i

macro_rules! shuffle_abi_f128z_all_m256i {
    ($a:expr, $b:expr, [$low:tt, $high:tt]) => { ... };
    (@_convert_tt_to_select A_Low) => { ... };
    (@_convert_tt_to_select A_High) => { ... };
    (@_convert_tt_to_select B_Low) => { ... };
    (@_convert_tt_to_select B_High) => { ... };
    (@_convert_tt_to_select Zeroed) => { ... };
}
This is supported with target feature avx only.

Slowly swizzle 128 bits of integer data from $a and $b using an immediate control value.

You can pass A_Low, A_High, B_Low, B_High, or Zeroed.

If avx2 is available you should use shuffle_abi_i128z_all_m256i instead. Only use this if you're targeting avx but not avx2.

let a = m256i::from([1, 2, 3, 4, 5, 6, 7, 8]);
let b = m256i::from([9, 10, 11, 12, 13, 14, 15, 16]);
//
let c: [i32; 8] = shuffle_abi_f128z_all_m256i!(a, b, [B_Low, Zeroed]).into();
assert_eq!(c, [9, 10, 11, 12, 0, 0, 0, 0]);
//
let c: [i32; 8] = shuffle_abi_f128z_all_m256i!(a, b, [Zeroed, A_High]).into();
assert_eq!(c, [0, 0, 0, 0, 5, 6, 7, 8]);