fn permute<'tcx>(
ecx: &mut MiriInterpCx<'tcx>,
values: &OpTy<'tcx>,
indices: &OpTy<'tcx>,
dest: &MPlaceTy<'tcx>,
) -> InterpResult<'tcx, ()>Expand description
Shuffle elements in values across lanes using the corresponding index in
indices, and store the results in dest.
This helper is shared by both the 32-bit-lane and 64-bit-lane AVX
permute-by-index intrinsics. The element type is taken from values and
dest, while the index lanes are interpreted at their full width (i32 or
i64, depending on the intrinsic).
For a vector with N lanes, only the low log2(N) bits of each index are
used. Equivalently, lane i of the result is copied from
values[indices[i] & (N - 1)].
https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutevar8x32_epi32 https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm256_permutevar8x32_ps https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_epi32 https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm512_permutexvar_epi64