Instrucción de permutación


Las instrucciones de permutación (y reproducción aleatoria), que forman parte de la manipulación de bits y del procesamiento de vectores , copian contenidos inalterados de una matriz de origen a una matriz de destino, donde los índices se especifican mediante una segunda matriz de origen. [1] El tamaño (ancho de bits) de los elementos de origen no está restringido, pero sigue siendo el mismo que el tamaño de destino.

Existen dos variantes de permutación importantes, conocidas como recopilación y dispersión, respectivamente. La variante de recopilación es la siguiente:

Tenga en cuenta que, a diferencia de la recopilación-dispersión basada en memoria, los tres dest, srcy indicesson registros (o partes de registros en el caso de permutación a nivel de bits), no ubicaciones de memoria.

Se puede ver que la variante de dispersión "dispersa" los elementos de origen a través (hacia) el destino, donde la variante de "recopilación" recopila datos de los elementos de origen indexados.

Dado que los índices pueden repetirse en ambas variantes, la salida resultante no es una permutación matemática estricta porque pueden ocurrir duplicados en la salida.

También se utiliza un caso especial de permutación en GPU " swizzling " (una vez más, no estrictamente una permutación) que realiza el reordenamiento sobre la marcha de datos de subvectores para alinear o duplicar elementos con el carril SIMD apropiado .