VCOMPRESSPD
Tienda Sparse valores en coma flotante de precisión doble empaquetados Into Dense
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.128.66.0F38.W1 8A /r | VCOMPRESSPD xmm1/m128 {k1}{z}, xmm2 | A | Valido | Valido | Compress de doble precisión flotante- AVX512F) O valores de punto de xmm2 a xmm1/m128 utilizando AVX10.1 máscara de escritura k1. |
EVEX.256.66.0F38.W1 8A /r | VCOMPRESSPD ymm1/m256 {k1}{z}, ymm2 | A | Valido | Valido | Compress de doble precisión flotante- AVX512F) O valores de punto de ymm2 a ymm1/m256 utilizando AVX10.1 máscara de escritura k1. |
EVEX.512.66.0F38.W1 8A /r | VCOMPRESSPD zmm1/m512 {k1}{z}, zmm2 | A | Valido | Valido | Compress de doble precisión flotante- OR AVX10.1 valores de punto de zmm2 usando máscara de control k1 a zmm1/m512. |
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
Coste medido
Cargando las mediciones de arch-data...
Descripción
Compresss (store) hasta 8valores en coma flotante de precisión dobledesdeel operando de origen(el segundo)operando) como un vector contiguoel operando de destino(el primero)operando) el operando de origenes unZMM/YMM/XMMregistro,el operando de destinopuede serZMM/YMM/XMMregistro o un 512/256/128-bitubicación de memoria.
El registro de omasco k1 selecciona los elementos activos ( vector parcial o posiblemente no contiguo si menos de 8 elementos activos) del operando de origen para comprimir en un vector contiguo. El vector contiguo está escrito al destino a partir del elemento bajo del operando de destino.
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.
EVEX.vvvv está reservado y debe ser 1111b instrucciones de lo contrario #UD.
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
VCOMPRESSPD (EVEX Encoded Versions) Store Form
(KL, VL) = (2, 128), (4, 256), (8, 512)
SIZE := 64
k := 0
FOR j := 0 TO KL-1
i := j * 64
IF k1[j] OR *no writemask*
THEN
DEST[k+SIZE-1:k] := SRC[i+63:i]
k := k + SIZE
FI;
ENDFOR
VCOMPRESSPD (EVEX Encoded Versions) Reg-Reg Form
(KL, VL) = (2, 128), (4, 256), (8, 512)
SIZE := 64
k := 0
FOR j := 0 TO KL-1
i := j * 64
IF k1[j] OR *no writemask*
THEN
DEST[k+SIZE-1:k] := SRC[i+63:i]
k := k + SIZE
FI;
ENDFOR
IF *merging-masking*
THEN *DEST[VL-1:k] remains unchanged*
ELSE DEST[VL-1:k] := 0
FI
DEST[MAXVL-1:VL] := 0Intel C/C++ compilador intrínseco
VCOMPRESSPD __m512d _mm512_mask_compress_pd( __m512d s, __mmask8 k, __m512d a);
VCOMPRESSPD __m512d _mm512_maskz_compress_pd( __mmask8 k, __m512d a);
VCOMPRESSPD void _mm512_mask_compressstoreu_pd( void * d, __mmask8 k, __m512d a);
VCOMPRESSPD __m256d _mm256_mask_compress_pd( __m256d s, __mmask8 k, __m256d a);
VCOMPRESSPD __m256d _mm256_maskz_compress_pd( __mmask8 k, __m256d a);
VCOMPRESSPD void _mm256_mask_compressstoreu_pd( void * d, __mmask8 k, __m256d a);
VCOMPRESSPD __m128d _mm_mask_compress_pd( __m128d s, __mmask8 k, __m128d a);
VCOMPRESSPD __m128d _mm_maskz_compress_pd( __mmask8 k, __m128d a);
VCOMPRESSPD void _mm_mask_compressstoreu_pd( void * d, __mmask8 k, __m128d a);SIMD coma flotante Excepciones
None.
Otras excepciones
Instrucciones de código EVEX, ver Excepciones Tipo E4.nb en la tabla 2-51, "Tipo E4 Clase Condiciones de Excepción".
Additionally:
#UD If EVEX.vvvv != 1111B.