VPMOVM2B, VPMOVM2W, VPMOVM2D, VPMOVM2Q

Convertir un Mask Register en un Vector

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.128.F3.0F38.W0 28 /rVPMOVM2B xmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2B ymm1, k1RMValidoValidoEstablece 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 /rVPMOVM2B zmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2W xmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2W ymm1, k1RMValidoValidoEstablece 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 /rVPMOVM2W zmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2D xmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2D ymm1, k1RMValidoValidoEstablece 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 /rVPMOVM2D zmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2Q xmm1, k1RMValidoValidoEstablece 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 /rVPMOVM2Q ymm1, k1RMValidoValidoEstablece 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 /rVPMOVM2Q zmm1, k1RMValidoValidoEstablece 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

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte 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] := 0

Intel 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

Fuentes