Skip to main content

permute

Function permute 

Source
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