KUNPCKBW, KUNPCKWD, KUNPCKDQ

Unpack for Mask Registers

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.L1.66.0F.W0 4B /rKUNPCKBW k1, k2, k3RVRValidoValidoMochila máscaras de 8 bits en k2 y k3 y escriba resultado de la palabra en k1. OR AVX10.1
VEX.L1.0F.W0 4B /rKUNPCKWD k1, k2, k3RVRValidoValidoDesempaca máscaras de 16 bits en k2 y k3 y escribe un resultado de doble palabra OR AVX10.1 en k1.
VEX.L1.0F.W1 4B /rKUNPCKDQ k1, k2, k3RVRValidoValidoMochila máscaras de 32 bits en k2 y k3 y escriba resultado de cuádwords en OR AVX10.1 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.

RVR

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. vex.vvvv lecturaprefijo VEX, campo vvvv (invertido)
  3. 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

Desempaca los 8/16/32 bits inferiores de la segunda y tercera operandos (operandos de origen) en la parte baja de la primera operando (operando de destino), a partir de los bytes bajos. El resultado es cero-extended en el destino.

Operación

KUNPCKBW
DEST[7:0] := SRC2[7:0]
DEST[15:8] := SRC1[7:0]
DEST[MAX_KL-1:16] := 0

KUNPCKWD

DEST[15:0] := SRC2[15:0]
DEST[31:16] := SRC1[15:0]
DEST[MAX_KL-1:32] := 0

KUNPCKDQ

DEST[31:0] := SRC2[31:0]
DEST[63:32] := SRC1[31:0]
DEST[MAX_KL-1:64] := 0

Intel C/C++ compilador intrínseco

KUNPCKBW __mmask16 _mm512_kunpackb(__mmask16 a, __mmask16 b);
KUNPCKDQ __mmask64 _mm512_kunpackd(__mmask64 a, __mmask64 b);
KUNPCKWD __mmask32 _mm512_kunpackw(__mmask32 a, __mmask32 b);

Banderas afectadas

None.

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-65, "TYPE K20 Excepción Definición (VEX-Encoded OpMask Instrucciones w/o Memoria Arg)."

Fuentes