simd_shuffle: pass the idx argument as a vector

This commit is contained in:
Ralf Jung 2024-08-28 07:41:59 +02:00 committed by Amanieu d'Antras
parent 03f144596f
commit 7ccb13c178

View file

@ -114,10 +114,18 @@ macro_rules! types {
)*);
}
#[allow(unused)]
#[repr(simd)]
pub(crate) struct SimdShuffleIdx<const LEN: usize>(pub(crate) [u32; LEN]);
#[allow(unused)]
macro_rules! simd_shuffle {
($x:expr, $y:expr, $idx:expr $(,)?) => {{
$crate::intrinsics::simd::simd_shuffle::<_, [u32; _], _>($x, $y, const { $idx })
$crate::intrinsics::simd::simd_shuffle(
$x,
$y,
const { $crate::core_arch::macros::SimdShuffleIdx($idx) },
)
}};
}