VEXPANDPD
Carga Sparse valores en coma flotante de precisión doble empaquetados De Memoria Dense
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.128.66.0F38.W1 88 /r | VEXPANDPD xmm1 {k1}{z}, xmm2/m128 | A | Valido | Valido | Ampliar los valores de coma flotante de precisión doble AVX512F) OR de xmm2/m128 a xmm1 utilizando AVX10.1 máscara de escritura k1. |
EVEX.256.66.0F38.W1 88 /r | VEXPANDPD ymm1 {k1}{z}, ymm2/m256 | A | Valido | Valido | Expandir los valores de coma flotante de precisión doble AVX512F) OR AVX10.1 de ymm2/m256 a ymm1 utilizando máscara de escritura k1. |
EVEX.512.66.0F38.W1 88 /r | VEXPANDPD zmm1 {k1}{z}, zmm2/m512 | A | Valido | Valido | Ampliar los valores de coma flotante de precisión doble OR AVX10.1 de zmm2/m512 a zmm1 utilizando 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.regescriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Tuple1 Scalar
Coste medido
Cargando las mediciones de arch-data...
Descripción
Ampliar (carga) hasta 8/4/2, contiguo, valores en coma flotante de precisión doble del vector de entrada en el operando de origen (el segundo operando) a elementos escasos en el operando de destino (el primer operando) seleccionado por la máscara de escritura k1.
El operando de destino es un registro ZMM/YMM/XMM, el operando de origen puede ser un registro ZMM/YMM/XMM o un registro 512/256/128-bit ubicación de memoria.
El vector de entrada comienza desde el elemento más bajo del operando de origen. La máscara de escritura registra k1 selecciona los elementos de destino (un vector parcial o elementos escasos si menos de 8 elementos) para ser reemplazados por los elementos ascendentes en el vector de entrada. Los elementos de destino no seleccionados por la máscara de escritura k1 son sin modificar o cero, dependiendo de EVEX.z.
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
VEXPANDPD (EVEX Encoded Versions)
(KL, VL) = (2, 128), (4, 256), (8, 512)
k := 0
FOR j := 0 TO KL-1
i := j * 64
IF k1[j] OR *no writemask*
THEN
DEST[i+63:i] := SRC[k+63:k];
k := k + 64
ELSE
IF *merging-masking* ; merging-masking
THEN *DEST[i+63:i] remains unchanged*
ELSE ; zeroing-masking
THEN DEST[i+63:i] := 0
FI
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0Intel C/C++ compilador intrínseco
VEXPANDPD __m512d _mm512_mask_expand_pd( __m512d s, __mmask8 k, __m512d a);
VEXPANDPD __m512d _mm512_maskz_expand_pd( __mmask8 k, __m512d a);
VEXPANDPD __m512d _mm512_mask_expandloadu_pd( __m512d s, __mmask8 k, void * a);
VEXPANDPD __m512d _mm512_maskz_expandloadu_pd( __mmask8 k, void * a);
VEXPANDPD __m256d _mm256_mask_expand_pd( __m256d s, __mmask8 k, __m256d a);
VEXPANDPD __m256d _mm256_maskz_expand_pd( __mmask8 k, __m256d a);
VEXPANDPD __m256d _mm256_mask_expandloadu_pd( __m256d s, __mmask8 k, void * a);
VEXPANDPD __m256d _mm256_maskz_expandloadu_pd( __mmask8 k, void * a);
VEXPANDPD __m128d _mm_mask_expand_pd( __m128d s, __mmask8 k, __m128d a);
VEXPANDPD __m128d _mm_maskz_expand_pd( __mmask8 k, __m128d a);
VEXPANDPD __m128d _mm_mask_expandloadu_pd( __m128d s, __mmask8 k, void * a);
VEXPANDPD __m128d _mm_maskz_expandloadu_pd( __mmask8 k, void * a);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Excepciones Tipo E4.nb en la tabla 2-51, "Tipo E4 Clase Condiciones de Excepción."
Additionally:
#UD If EVEX.vvvv != 1111B.