VPCOMPRESSB, VCOMPRESSW
Tienda Sparse Packed Byte/Word Integer Values Into Dense
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.128.66.0F38.W0 63 /r | VPCOMPRESSB m128{k1}, xmm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSB xmm1{k1}{z}, xmm2 | B | Valido | Valido | Compre 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 /r | VPCOMPRESSB m256{k1}, ymm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSB ymm1{k1}{z}, ymm2 | B | Valido | Valido | Compre 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 /r | VPCOMPRESSB m512{k1}, zmm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSB zmm1{k1}{z}, zmm2 | B | Valido | Valido | Compre 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 /r | VPCOMPRESSW m128{k1}, xmm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSW xmm1{k1}{z}, xmm2 | B | Valido | Valido | Compre 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 /r | VPCOMPRESSW m256{k1}, ymm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSW ymm1{k1}{z}, ymm2 | B | Valido | Valido | Compre 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 /r | VPCOMPRESSW m512{k1}, zmm1 | A | Valido | Valido | Compre 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 /r | VPCOMPRESSW zmm1{k1}{z}, zmm2 | B | Valido | Valido | Compre 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
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte ModRM, campo reg (bits 5-3)
Tupla: Tuple1 Scalar
B
modrm.rmescriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pidemodrm.reglecturabyte 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] := 0Intel 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".