VPMOVM2B, VPMOVM2W, VPMOVM2D, VPMOVM2Q
Convertir un Mask Register en un Vector
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.128.F3.0F38.W0 28 /r | VPMOVM2B xmm1, k1 | RM | Valido | Valido | Establece cada byte en XMM1 a todos 1's o todos 0's basados en el valor AVX512BW) OR AVX10.1 del bit correspondiente en k1. |
EVEX.256.F3.0F38.W0 28 /r | VPMOVM2B ymm1, k1 | RM | Valido | Valido | Establece cada byte en YMM1 a todos 1's o todos 0's basados en el valor AVX512BW) OR AVX10.1 del bit correspondiente en k1. |
EVEX.512.F3.0F38.W0 28 /r | VPMOVM2B zmm1, k1 | RM | Valido | Valido | Establece cada byte en ZMM1 a todos los 0's o 1's basados en el valor OR AVX10.1 del bit correspondiente en k1. |
EVEX.128.F3.0F38.W1 28 /r | VPMOVM2W xmm1, k1 | RM | Valido | Valido | Establece cada palabra en XMM1 a todos 1's o todos 0's basados en AVX512BW) OR AVX10.1 el valor del bit correspondiente en k1. |
EVEX.256.F3.0F38.W1 28 /r | VPMOVM2W ymm1, k1 | RM | Valido | Valido | Establece cada palabra en YMM1 a todos 1's o todos 0's basados en AVX512BW) OR AVX10.1 el valor del bit correspondiente en k1. |
EVEX.512.F3.0F38.W1 28 /r | VPMOVM2W zmm1, k1 | RM | Valido | Valido | Establece cada palabra en ZMM1 a todos los 0's o 1's basados en OR AVX10.1 el valor del bit correspondiente en k1. |
EVEX.128.F3.0F38.W0 38 /r | VPMOVM2D xmm1, k1 | RM | Valido | Valido | Establece cada palabra doble en XMM1 a todos los 1's o todos 0's AVX512DQ) OR AVX10.1 basado en el valor del bit correspondiente en k1. |
EVEX.256.F3.0F38.W0 38 /r | VPMOVM2D ymm1, k1 | RM | Valido | Valido | Establece cada palabra doble en YMM1 a todos los AVX512DQ basados en 1's o 0) OR AVX10.1 sobre el valor del bit correspondiente en k1. |
EVEX.512.F3.0F38.W0 38 /r | VPMOVM2D zmm1, k1 | RM | Valido | Valido | Establece cada palabra doble en ZMM1 a todos los 0 o 1's basado OR AVX10.1 en el valor del bit correspondiente en k1. |
EVEX.128.F3.0F38.W1 38 /r | VPMOVM2Q xmm1, k1 | RM | Valido | Valido | Establece cada cuadword en XMM1 a todos los 1's o todos los 0's basado AVX512DQ) OR AVX10.1 en el valor del bit correspondiente en k1. |
EVEX.256.F3.0F38.W1 38 /r | VPMOVM2Q ymm1, k1 | RM | Valido | Valido | Establece cada cuadword en YMM1 a todos los 1's o todos los 0's basado AVX512DQ) OR AVX10.1 en el valor del bit correspondiente en k1. |
EVEX.512.F3.0F38.W1 38 /r | VPMOVM2Q zmm1, k1 | RM | Valido | Valido | Establece cada cuadword en ZMM1 a todos los 0 o 1's basado OR AVX10.1 en el valor del bit correspondiente en 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.
RM
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
Coste medido
Cargando las mediciones de arch-data...
Descripción
Convierte un registro de máscaras en un registro vectorial. Cada elemento en el registro de destino se establece en todos los 1's o todos 0's dependiendo del valor del bit correspondiente en el registro de la máscara de origen. El operando de origen es un registro de máscaras. El operando de destino es un registro ZMM/YMM/XMM. EVEX.vvvv está reservado y debe ser 1111b instrucciones de lo contrario #UD.
Operación
VPMOVM2B (EVEX encoded versions)
(KL, VL) = (16, 128), (32, 256), (64, 512)
FOR j := 0 TO KL-1
i := j * 8
IF SRC[j]
THEN DEST[i+7:i] := -1
ELSE DEST[i+7:i] := 0
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0
VPMOVM2W (EVEX encoded versions)
(KL, VL) = (8, 128), (16, 256), (32, 512)
FOR j := 0 TO KL-1
i := j * 16
IF SRC[j]
THEN DEST[i+15:i] := -1
ELSE DEST[i+15:i] := 0
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0
VPMOVM2D (EVEX encoded versions)
(KL, VL) = (4, 128), (8, 256), (16, 512)
FOR j := 0 TO KL-1
i := j * 32
IF SRC[j]
THEN DEST[i+31:i] := -1
ELSE DEST[i+31:i] := 0
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0
VPMOVM2Q (EVEX encoded versions)
(KL, VL) = (2, 128), (4, 256), (8, 512)
FOR j := 0 TO KL-1
i := j * 64
IF SRC[j]
THEN DEST[i+63:i] := -1
ELSE DEST[i+63:i] := 0
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0Intel C/C++ compilador intrínseco
VPMOVM2B __m512i _mm512_movm_epi8(__mmask64 );
VPMOVM2D __m512i _mm512_movm_epi32(__mmask8 );
VPMOVM2Q __m512i _mm512_movm_epi64(__mmask16 );
VPMOVM2W __m512i _mm512_movm_epi16(__mmask32 );
VPMOVM2B __m256i _mm256_movm_epi8(__mmask32 );
VPMOVM2D __m256i _mm256_movm_epi32(__mmask8 );
VPMOVM2Q __m256i _mm256_movm_epi64(__mmask8 );
VPMOVM2W __m256i _mm256_movm_epi16(__mmask16 );
VPMOVM2B __m128i _mm_movm_epi8(__mmask16 );
VPMOVM2D __m128i _mm_movm_epi32(__mmask8 );
VPMOVM2Q __m128i _mm_movm_epi64(__mmask8 );
VPMOVM2W __m128i _mm_movm_epi16(__mmask8 );SIMD coma flotante Excepciones
None.
Otras excepciones
Instrucciones codificadas por EVEX, ver Tabla 2-57, "Tipo E7NM Clase Condiciones de Excepción."
Additionally: If EVEX.vvvv != 1111B.
#UD