VPBLENDD

Blend Packed Dwords

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.128.66.0F3A.W0 02 /r ibVPBLENDD xmm1, xmm2, xmm3/m128, imm8RVMIValidoValidoSeleccione dwords de xmm2 y xmm3/m128 de máscara especificada en imm8 y almacene los valores en xmm1.
VEX.256.66.0F3A.W0 02 /r ibVPBLENDD ymm1, ymm2, ymm3/m256, imm8RVMIValidoValidoSeleccione dwords de ymm2 y ymm3/m256 de máscara especificada en imm8 y almacene los valores en ymm1.

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.

RVMI

  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
  4. imm8byte inmediato que sigue a la instruccion

Coste medido

Cargando las mediciones de arch-data...

Descripción

Los elementos Dword del operando de origen (segundo operando) están condicionalmente escritos al operando de destino (primer operando) dependiendo de bits en el operando inmediato (tercer operando). Los bits inmediatos (bits 7:0) forman una máscara que determina si el dword correspondiente en el destino es copiado de la fuente. Si un poco en la máscara, correspondiente a un dword, es "1", entonces se copia el dword, de lo contrario el dword no se cambia.

VEX.128 versión codificada: El segundo operando de origen puede ser un registro XMM o una ubicación de memoria de 128 bits. La primera fuente y operandos de destino son registros XMM. Bits (MAXVL-1:128) del registro YMM correspondiente se ponen a cero.

VEX.256 versión codificada: El primer operando de origen es un registro YMM. El segundo operando de origen es un registro YMM o una ubicación de memoria de 256 bits. El operando de destino es un registro YMM.

Operación

VPBLENDD (VEX.256 encoded version)
IF (imm8[0] == 1) THEN DEST[31:0] := SRC2[31:0]
ELSE DEST[31:0] := SRC1[31:0]
IF (imm8[1] == 1) THEN DEST[63:32] := SRC2[63:32]
ELSE DEST[63:32] := SRC1[63:32]
IF (imm8[2] == 1) THEN DEST[95:64] := SRC2[95:64]
ELSE DEST[95:64] := SRC1[95:64]
IF (imm8[3] == 1) THEN DEST[127:96] := SRC2[127:96]
ELSE DEST[127:96] := SRC1[127:96]
IF (imm8[4] == 1) THEN DEST[159:128] := SRC2[159:128]
ELSE DEST[159:128] := SRC1[159:128]
IF (imm8[5] == 1) THEN DEST[191:160] := SRC2[191:160]
ELSE DEST[191:160] := SRC1[191:160]
IF (imm8[6] == 1) THEN DEST[223:192] := SRC2[223:192]
ELSE DEST[223:192] := SRC1[223:192]
IF (imm8[7] == 1) THEN DEST[255:224] := SRC2[255:224]
ELSE DEST[255:224] := SRC1[255:224]


VPBLENDD (VEX.128 encoded version)
IF (imm8[0] == 1) THEN DEST[31:0] := SRC2[31:0]
ELSE DEST[31:0] := SRC1[31:0]
IF (imm8[1] == 1) THEN DEST[63:32] := SRC2[63:32]
ELSE DEST[63:32] := SRC1[63:32]
IF (imm8[2] == 1) THEN DEST[95:64] := SRC2[95:64]
ELSE DEST[95:64] := SRC1[95:64]
IF (imm8[3] == 1) THEN DEST[127:96] := SRC2[127:96]
ELSE DEST[127:96] := SRC1[127:96]
DEST[MAXVL-1:128] := 0

Intel C/C++ compilador intrínseco

VPBLENDD:      __m128i _mm_blend_epi32 (__m128i v1, __m128i v2, const int mask) VPBLENDD:      __m256i _mm256_blend_epi32 (__m256i v1, __m256i v2, const int mask);

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción".

Additionally:

#UD               If VEX.W = 1.

Fuentes