macro_rules! shuffle_abi_f128z_all_m256d { ($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) => { ... }; }
Expand description
Shuffle 128 bits of floating point data at a time from $a
and $b
using
an immediate control value.
You can pass A_Low
, A_High
, B_Low
, B_High
, or Zeroed
.
let a = m256d::from_array([1.0, 2.0, 3.0, 4.0]);
let b = m256d::from_array([5.0, 6.0, 7.0, 8.0]);
//
let c = shuffle_abi_f128z_all_m256d!(a, b, [B_Low, Zeroed]).to_array();
assert_eq!(c, [5.0, 6.0, 0.0, 0.0]);
//
let c = shuffle_abi_f128z_all_m256d!(a, b, [Zeroed, A_High]).to_array();
assert_eq!(c, [0.0, 0.0, 3.0, 4.0]);
- Intrinsic:
_mm256_permute2f128_pd
- Assembly:
vperm2f128 ymm, ymm, ymm, imm8