KMOVW, KMOVB, KMOVQ, KMOVD

Muévete de y a los registros de máscaras

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.L0.0F.W0 90 /rKMOVW k1, k2/m16RMValidoValidoMover 16 bits máscara de k2/m16 y almacenar el resultado en k1. OR AVX10.1
VEX.L0.66.0F.W0 90 /rKMOVB k1, k2/m8RMValidoValidoMover 8 bits máscara de k2/m8 y almacenar el resultado en k1. OR AVX10.1
VEX.L0.0F.W1 90 /rKMOVQ k1, k2/m64RMValidoValidoMover 64 bits máscara de k2/m64 y almacenar el resultado en k1. OR AVX10.1
VEX.L0.66.0F.W1 90 /rKMOVD k1, k2/m32RMValidoValidoMover 32 bits máscara de k2/m32 y almacenar el resultado en k1. OR AVX10.1
VEX.L0.0F.W0 91 /rKMOVW m16, k1MRValidoValidoMover 16 bits máscara de k1 y almacenar el resultado en m16. OR AVX10.1
VEX.L0.66.0F.W0 91 /rKMOVB m8, k1MRValidoValidoMover 8 bits máscara de k1 y almacenar el resultado en m8. OR AVX10.1
VEX.L0.0F.W1 91 /rKMOVQ m64, k1MRValidoValidoMover 64 bits máscara de k1 y almacenar el resultado en m64. OR AVX10.1
VEX.L0.66.0F.W1 91 /rKMOVD m32, k1MRValidoValidoMover 32 bits máscara de k1 y almacenar el resultado en m32. OR AVX10.1
VEX.L0.0F.W0 92 /rKMOVW k1, r32RRValidoValidoMover 16 bits máscara de r32 a k1. OR AVX10.1
VEX.L0.66.0F.W0 92 /rKMOVB k1, r32RRValidoValidoMover 8 bits máscara de r32 a k1. OR AVX10.1
VEX.L0.F2.0F.W1 92 /rKMOVQ k1, r64RRValidoNo validoMover 64 bits máscara de r64 a k1. OR AVX10.1
VEX.L0.F2.0F.W0 92 /rKMOVD k1, r32RRValidoValidoMover 32 bits máscara de r32 a k1. OR AVX10.1
VEX.L0.0F.W0 93 /rKMOVW r32, k1RRValidoValidoMover 16 bits máscara de k1 a r32. OR AVX10.1
VEX.L0.66.0F.W0 93 /rKMOVB r32, k1RRValidoValidoMover 8 bits máscara de k1 a r32. OR AVX10.1
VEX.L0.F2.0F.W1 93 /rKMOVQ r64, k1RRValidoNo validoMover 64 bits máscara de k1 a r64. OR AVX10.1
VEX.L0.F2.0F.W0 93 /rKMOVD r32, k1RRValidoValidoMover 32 bits máscara de k1 a r32. OR AVX10.1

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

MR

  1. modrm.rm lectura y escriturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
  2. modrm.reg lecturabyte ModRM, campo reg (bits 5-3)

RR

  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

Copie valores del operando de origen (segundo operando) al operando de destino (primer operando). La fuente y operandos de destino pueden ser registros de máscaras, ubicación de memoria o propósito general. La instrucción no puede utilizarse para transferir datos entre los registros de propósito general y los lugares de memoria.

Cuando se mueve a un registro de máscaras, el resultado es cero extendido al tamaño MAX KL (es decir, 64 bits actualmente). Cuando se mueve a un registro de proposito general (GPR), el resultado es cero-extended al tamaño del destino. En modo de 32 bits, el tamaño de destino GPR predeterminado es de 32 bits. En modo de 64 bits, el tamaño de destino GPR predeterminado es de 64 bits. Tenga en cuenta que VEX.W sólo se puede utilizar para modificar el tamaño del GPR operando en modo 64b.

Operación

KMOVW
IF *destination is a memory location*

    DEST[15:0] := SRC[15:0]
IF *destination is a mask register or a GPR *

    DEST := ZeroExtension(SRC[15:0])

KMOVB
IF *destination is a memory location*

    DEST[7:0] := SRC[7:0]
IF *destination is a mask register or a GPR *

    DEST := ZeroExtension(SRC[7:0])

KMOVQ
IF *destination is a memory location or a GPR*

    DEST[63:0] := SRC[63:0]
IF *destination is a mask register*

    DEST := ZeroExtension(SRC[63:0])

KMOVD
IF *destination is a memory location*

    DEST[31:0] := SRC[31:0]
IF *destination is a mask register or a GPR *

    DEST := ZeroExtension(SRC[31:0])

Intel C/C++ compilador intrínseco

KMOVW __mmask16 _mm512_kmov(__mmask16 a);

Banderas afectadas

None.

SIMD coma flotante Excepciones

None.

Otras excepciones

Instrucciones con RRoperandocodificación, ver Tabla 2-65, "TYPE K20Definición de ExcepciónVEX-Instrucciones de OpMask codificadas w/o Memory Arg)." Instrucciones con RM o MRoperandocodificación, ver Tabla 2-66, "TYPE K21Definición de ExcepciónVEX-Instrucciones de OpMask codificadas a la memoria)."

Fuentes