VPDPBSUD, VPDPBSUDS, VPDPBUUD, VPDPBUUDS, VPDPBSSD, VPDPBSSDS
Multiply y Add Unsigned y Signed Bytes With y Without
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
VEX.128.F2.0F38.W0 50 /r | VPDPBSSD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 4 pares de bytes firmados enxmm3/m128con los correspondientes bytes firmadosxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabraxmm1. |
VEX.256.F2.0F38.W0 50 /r | VPDPBSSD ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 4 pares de bytes firmados enymm3/m256con los correspondientes bytes firmadosymm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabraymm1. |
VEX.128.F2.0F38.W0 51 /r | VPDPBSSDS xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 4 pares de bytes firmados enxmm3/m128con los correspondientes bytes firmadosxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación firmada enxmm1. |
VEX.256.F2.0F38.W0 51 /r | VPDPBSSDS ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 4 pares de bytes firmados enymm3/m256con los correspondientes bytes firmadosymm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación firmada enymm1. |
VEX.128.F3.0F38.W0 50 /r | VPDPBSUD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enxmm3/m128con los correspondientes bytes firmadosxmm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enxmm1. |
VEX.256.F3.0F38.W0 50 /r | VPDPBSUD ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enymm3/m256con los correspondientes bytes firmadosymm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enymm1. |
VEX.128.F3.0F38.W0 51 /r | VPDPBSUDS xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enxmm3/m128con los correspondientes bytes firmadosxmm2, resumiendo esos productos y añadiéndolos al resultado de doble palabra, con saturación firmada enxmm1. |
VEX.256.F3.0F38.W0 51 /r | VPDPBSUDS ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enymm3/m256con los correspondientes bytes firmadosymm2, resumiendo esos productos y añadiéndolos al resultado de doble palabra, con saturación firmada enymm1. |
VEX.128.NP.0F38.W0 50 /r | VPDPBUUD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enxmm3/m128con los correspondientes bytesxmm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enxmm1. |
VEX.256.NP.0F38.W0 50 /r | VPDPBUUD ymm1, ymm2, ymm3/m256 Opcode/ Instruction | A | Valido | Valido | Multiply grupos de 4 pares de bytes sin firmar enymm3/m256con los correspondientes bytesymm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enymm1. Op / 64/32CPUIDCaracterísticas Descripción En bit Mode Soporte de bandera |
VEX.128.NP.0F38.W0 51 /r | VPDPBUUDS xmm1, xmm2, xmm3/m128 | a | Multiply grupos de 4 pares de bytes sin firmar enxmm3/m128con los correspondientes bytesxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación insigniaxmm1. | ||
VEX.256.NP.0F38.W0 51 /r | VPDPBUUDS ymm1, ymm2, ymm3/m256 | a | Multiply grupos de 4 pares de bytes sin firmar enymm3/m256con los correspondientes bytesymm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación insigniaymm1. |
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.
A
modrm.reglectura y escriturabyte ModRM, campo reg (bits 5-3)vex.vvvvlecturaprefijo VEX, campo vvvv (invertido)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
Multiplica los bytes individuales del primer operando de origen por los bytes correspondientes del segundo operando de origen, produciendo resultados de palabras intermedias. Los resultados de la palabra se resumen y se acumulan en el tamaño del elemento dword destino operando.
Para la saturación insignia, cuando un valor de resultado individual está más allá de la gama de una doble palabra insignia (es decir, mayor que FFFFF FFFFH), el valor integer de doble palabra saturada de FFFF FFFFH se almacena en el destino de doble palabra.
Para la saturación firmada, cuando un resultado individual está más allá de la gama de un entero de doble palabra firmado (es decir, más de 7FFF FFFFH o menos de 8000 0000H), el valor saturado de 7FFF FFH o 8000 0000H, respectivamente, está escrito al operando de destino.
Operación
VPDPB[SU,UU,SS]D[,S] dest, src1, src2 (VEX encoded version)
VL = (128, 256)
KL = VL/32
ORIGDEST := DEST
FOR i := 0 TO KL-1:
IF *src1 is signed*:
src1extend := SIGN_EXTEND // SU, SS
ELSE:
src1extend := ZERO_EXTEND // UU
IF *src2 is signed*:
src2extend := SIGN_EXTEND // SS
ELSE:
src2extend := ZERO_EXTEND // UU, SU
p1word := src1extend(SRC1.byte[4*i+0]) * src2extend(SRC2.byte[4*i+0])
p2word := src1extend(SRC1.byte[4*i+1]) * src2extend(SRC2.byte[4*i+1])
p3word := src1extend(SRC1.byte[4*i+2]) * src2extend(SRC2.byte[4*i+2])
p4word := src1extend(SRC1.byte[4*i+3]) * src2extend(SRC2.byte[4*i+3])
IF *saturating*:
IF *UU instruction version*:
DEST.dword[i] := UNSIGNED_DWORD_SATURATE(ORIGDEST.dword[i] + p1word + p2word + p3word + p4word)
ELSE:
DEST.dword[i] := SIGNED_DWORD_SATURATE(ORIGDEST.dword[i] + p1word + p2word + p3word + p4word)
ELSE:
DEST.dword[i] := ORIGDEST.dword[i] + p1word + p2word + p3word + p4word
DEST[MAXVL-1:VL] := 0Banderas afectadas
None.
Intel C/C++ compilador intrínseco
VPDPBSSD __m128i _mm_dpbssd_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBSSD __m256i _mm256_dpbssd_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPBSSDS __m128i _mm_dpbssds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBSSDS __m256i _mm256_dpbssds_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPBSUD __m128i _mm_dpbsud_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBSUD __m256i _mm256_dpbsud_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPBSUDS __m128i _mm_dpbsuds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBSUDS __m256i _mm256_dpbsuds_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPBUUD __m128i _mm_dpbuud_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBUUD __m256i _mm256_dpbuud_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPBUUDS __m128i _mm_dpbuuds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPBUUDS __m256i _mm256_dpbuuds_epi32 (__m256i __W, __m256i __A, __m256i __B);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción".