VPCOMPRESSB, VCOMPRESSW

Tienda Sparse Packed Byte/Word Integer Values Into Dense

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.128.66.0F38.W0 63 /rVPCOMPRESSB m128{k1}, xmm1AValidoValidoCompre hasta 128 bits de byte AVX512VL empaquetado) OR AVX10.1 valores de xmm1 a m128 con máscara de escritura k1.
EVEX.128.66.0F38.W0 63 /rVPCOMPRESSB xmm1{k1}{z}, xmm2BValidoValidoCompre hasta 128 bits de byte AVX512VL empaquetado) OR AVX10.1 valores de xmm2 a xmm1 con máscara de escritura k1.
EVEX.256.66.0F38.W0 63 /rVPCOMPRESSB m256{k1}, ymm1AValidoValidoCompre hasta 256 bits de byte AVX512VL empaquetado) OR AVX10.1 valores de ymm1 a m256 con máscara de escritura k1.
EVEX.256.66.0F38.W0 63 /rVPCOMPRESSB ymm1{k1}{z}, ymm2BValidoValidoCompre hasta 256 bits de byte AVX512VL empaquetado) OR AVX10.1 valores de ymm2 a ymm1 con máscara de escritura k1.
EVEX.512.66.0F38.W0 63 /rVPCOMPRESSB m512{k1}, zmm1AValidoValidoCompre hasta 512 bits de valores empaquetados de byte OR AVX10.1 de zmm1 a m512 con máscara de escritura k1.
EVEX.512.66.0F38.W0 63 /rVPCOMPRESSB zmm1{k1}{z}, zmm2BValidoValidoCompre hasta 512 bits de valores empaquetados de byte OR AVX10.1 de zmm2 a zmm1 con máscara de escritura k1.
EVEX.128.66.0F38.W1 63 /rVPCOMPRESSW m128{k1}, xmm1AValidoValidoCompre hasta 128 bits de palabras empaquetadas AVX512VL) OR AVX10.1 valores de xmm1 a m128 con máscara de escritura k1.
EVEX.128.66.0F38.W1 63 /rVPCOMPRESSW xmm1{k1}{z}, xmm2BValidoValidoCompre hasta 128 bits de palabras empaquetadas AVX512VL) OR AVX10.1 valores de xmm2 a xmm1 con máscara de escritura k1.
EVEX.256.66.0F38.W1 63 /rVPCOMPRESSW m256{k1}, ymm1AValidoValidoCompre hasta 256 bits de palabra empaquetada AVX512VL) OR AVX10.1 valores de ymm1 a m256 con máscara de escritura k1.
EVEX.256.66.0F38.W1 63 /rVPCOMPRESSW ymm1{k1}{z}, ymm2BValidoValidoCompre hasta 256 bits de palabra empaquetada AVX512VL) OR AVX10.1 valores de ymm2 a ymm1 con máscara de escritura k1.
EVEX.512.66.0F38.W1 63 /rVPCOMPRESSW m512{k1}, zmm1AValidoValidoCompre hasta 512 bits de palabras envasadas OR AVX10.1 valores de zmm1 a m512 con máscara de escritura k1.
EVEX.512.66.0F38.W1 63 /rVPCOMPRESSW zmm1{k1}{z}, zmm2BValidoValidoCompre hasta 512 bits de palabras envasadas OR AVX10.1 valores de zmm2 a zmm1 con máscara de escritura k1.

Codificacion de operandos

Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.

A

  1. modrm.rm escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
  2. modrm.reg lecturabyte ModRM, campo reg (bits 5-3)

Tupla: Tuple1 Scalar

B

  1. modrm.rm escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
  2. modrm.reg lecturabyte ModRM, campo reg (bits 5-3)

Coste medido

Cargando las mediciones de arch-data...

Descripción

Compress (stores) hasta 64 valores byte o 32 valores de palabras del operando de origen (segundo operando) al operando de destino (primer operando), basado en los elementos activos determinados por la máscara de escritura operando. Nota: EVEX.vvvv está reservado y debe ser 1111b instrucciones de lo contrario #UD.

Se mueve hasta 512 bits de valores de byte empaquetados del operando de origen (segundo operando) al operando de destino (primer operando). Esta instrucción se utiliza para almacenar contenidos parciales de un registro vectorial en un vector de byte o ubicación de memoria simple utilizando los elementos activos en operando máscara de escritura.

Versión de destino de memoria: Sólo el vector contiguo está escrito al destino ubicación de memoria. EVEX.z debe ser cero.

Versión de destino del registro: Si la longitud vectorial del vector contiguo es menor que la del vector de entrada en el operando de origen, los bits superiores del registro de destino son sin modificar si EVEX.z no está fijado, de lo contrario los bits superiores se ponen a cero.

Esta instrucción admite la supresión de la falla de memoria.

Tenga en cuenta que el desplazamiento comprimido supone un pre-escalamiento (N) correspondiente al tamaño de un solo elemento en lugar del tamaño del vector completo.

Operación

VPCOMPRESSB store form
(KL, VL) = (16, 128), (32, 256), (64, 512)
k := 0
FOR j := 0 TO KL-1:

    IF k1[j] OR *no writemask*:
          DEST.byte[k] := SRC.byte[j]
          k := k +1

VPCOMPRESSB reg-reg form
(KL, VL) = (16, 128), (32, 256), (64, 512)
k := 0
FOR j := 0 TO KL-1:

    IF k1[j] OR *no writemask*:
          DEST.byte[k] := SRC.byte[j]
          k := k + 1

IF *merging-masking*:
    *DEST[VL-1:k*8] remains unchanged*
    ELSE DEST[VL-1:k*8] := 0

DEST[MAX_VL-1:VL] := 0

VPCOMPRESSW store form
(KL, VL) = (8, 128), (16, 256), (32, 512)
k := 0
FOR j := 0 TO KL-1:

    IF k1[j] OR *no writemask*:
          DEST.word[k] := SRC.word[j]
          k := k + 1


VPCOMPRESSW reg-reg form
(KL, VL) = (8, 128), (16, 256), (32, 512)
k := 0
FOR j := 0 TO KL-1:

    IF k1[j] OR *no writemask*:
          DEST.word[k] := SRC.word[j]
          k := k + 1

IF *merging-masking*:
    *DEST[VL-1:k*16] remains unchanged*
    ELSE DEST[VL-1:k*16] := 0

DEST[MAX_VL-1:VL] := 0

Intel C/C++ compilador intrínseco

VPCOMPRESSB __m128i _mm_mask_compress_epi8(__m128i, __mmask16, __m128i);
VPCOMPRESSB __m128i _mm_maskz_compress_epi8(__mmask16, __m128i);
VPCOMPRESSB __m256i _mm256_mask_compress_epi8(__m256i, __mmask32, __m256i);
VPCOMPRESSB __m256i _mm256_maskz_compress_epi8(__mmask32, __m256i);
VPCOMPRESSB __m512i _mm512_mask_compress_epi8(__m512i, __mmask64, __m512i);
VPCOMPRESSB __m512i _mm512_maskz_compress_epi8(__mmask64, __m512i);
VPCOMPRESSB void _mm_mask_compressstoreu_epi8(void*, __mmask16, __m128i);
VPCOMPRESSB void _mm256_mask_compressstoreu_epi8(void*, __mmask32, __m256i);
VPCOMPRESSB void _mm512_mask_compressstoreu_epi8(void*, __mmask64, __m512i);
VPCOMPRESSW __m128i _mm_mask_compress_epi16(__m128i, __mmask8, __m128i);
VPCOMPRESSW __m128i _mm_maskz_compress_epi16(__mmask8, __m128i);
VPCOMPRESSW __m256i _mm256_mask_compress_epi16(__m256i, __mmask16, __m256i);
VPCOMPRESSW __m256i _mm256_maskz_compress_epi16(__mmask16, __m256i);
VPCOMPRESSW __m512i _mm512_mask_compress_epi16(__m512i, __mmask32, __m512i);
VPCOMPRESSW __m512i _mm512_maskz_compress_epi16(__mmask32, __m512i);
VPCOMPRESSW void _mm_mask_compressstoreu_epi16(void*, __mmask8, __m128i);
VPCOMPRESSW void _mm256_mask_compressstoreu_epi16(void*, __mmask16, __m256i);
VPCOMPRESSW void _mm512_mask_compressstoreu_epi16(void*, __mmask32, __m512i);

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-51, "Tipo E4 Clase Condiciones de Excepción".

Fuentes