VPDPWSUD, VPDPWSUDS, VPDPWUSD, VPDPWUSDS, VPDPWUUD, VPDPWUUDS
Multiply y Add Unsigned y Signed Words With y Without
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
VEX.128.F3.0F38.W0 D2 /r | VPDPWSUD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enxmm3/m128con las correspondientes palabras firmadasxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabraxmm1. |
VEX.256.F3.0F38.W0 D2 /r | VPDPWSUD ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enymm3/m256con las correspondientes palabras firmadasymm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabraymm1. |
VEX.128.F3.0F38.W0 D3 /r | VPDPWSUDS xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enxmm3/m128con las correspondientes palabras firmadasxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación firmada enxmm1. |
VEX.256.F3.0F38.W0 D3 /r | VPDPWSUDS ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enymm3/m256con las correspondientes palabras firmadasymm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación firmada enymm1. |
VEX.128.66.0F38.W0 D2 /r | VPDPWUSD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 2 pares de palabras firmadas enxmm3/m128con las correspondientes palabras no firmadasxmm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enxmm1. |
VEX.256.66.0F38.W0 D2 /r | VPDPWUSD ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 2 pares de palabras firmadas enymm3/m256con las correspondientes palabras no firmadasymm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enymm1. |
VEX.128.66.0F38.W0 D3 /r | VPDPWUSDS xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 2 pares de palabras firmadas enxmm3/m128con las correspondientes palabras no firmadasxmm2, resumiendo esos productos y añadiéndolos al resultado de doble palabra, con saturación firmada enxmm1. |
VEX.256.66.0F38.W0 D3 /r | VPDPWUSDS ymm1, ymm2, ymm3/m256 | A | Valido | Valido | Multiply grupos de 2 pares de palabras firmadas enymm3/m256con las correspondientes palabras no firmadasymm2, resumiendo esos productos y añadiéndolos al resultado de doble palabra, con saturación firmada enymm1. |
VEX.128.NP.0F38.W0 D2 /r | VPDPWUUD xmm1, xmm2, xmm3/m128 | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enxmm3/m128con las correspondientes palabras no firmadasxmm2, resumiendo esos productos y añadiéndolos a doble palabra resultado enxmm1. |
VEX.256.NP.0F38.W0 D2 /r | VPDPWUUD ymm1, ymm2, ymm3/m256 Opcode/ Instruction | A | Valido | Valido | Multiply grupos de 2 pares de palabras no firmadas enymm3/m256con las correspondientes palabras no firmadasymm2, 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 D3 /r | VPDPWUUDS xmm1, xmm2, xmm3/m128 | a | Multiply grupos de 2 pares de palabras no firmadas enxmm3/m128con las correspondientes palabras no firmadasxmm2, resumiendo esos productos y añadiéndolos al resultado de la doble palabra, con saturación insigniaxmm1. | ||
VEX.256.NP.0F38.W0 D3 /r | VPDPWUUDS ymm1, ymm2, ymm3/m256 | a | Multiply grupos de 2 pares de palabras no firmadas enymm3/m256con las correspondientes palabras no firmadasymm2, 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 las palabras individuales del primer operando de origen por las palabras correspondientes del segundo operando de origen, produciendo resultados intermedios de dword. Los resultados de dword se resumen y se acumulan en el tamaño de 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 FFFF FFFFH), el valor integer saturado de doble palabra integer 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.
La versión EVEX de VPDPWSSD[,S] fue introducida previamente con AVX512 VNNI. La versión VEX de VPDPWSSD[,S] fue introducida previamente con AVX VNNI.
Operación
VPDPW[UU,SU,US]D[,S] dest, src1, src2 (VEX encoded version)
VL = (128, 256)
KL = VL/32
ORIGDEST := DEST
IF *src1 is signed*: // SU
src1extend := SIGN_EXTEND
ELSE: // UU, US
src1extend := ZERO_EXTEND
IF *src2 is signed*: // US
src2extend := SIGN_EXTEND
ELSE: // UU, SU
src2extend := ZERO_EXTEND
FOR i := 0 TO KL-1:
p1dword := src1extend(SRC1.word[2*i+0]) * src2extend(SRC2.word[2*i+0])
p2dword := src1extend(SRC1.word[2*i+1]) * src2extend(SRC2.word[2*i+1])
IF *saturating version*:
IF *UU instruction version*:
DEST.dword[i] := UNSIGNED_DWORD_SATURATE(ORIGDEST.dword[i] + p1dword + p2dword)
ELSE:
DEST.dword[i] := SIGNED_DWORD_SATURATE(ORIGDEST.dword[i] + p1dword + p2dword)
ELSE:
DEST.dword[i] := ORIGDEST.dword[i] + p1dword + p2dword
DEST[MAX_VL-1:VL] := 0Banderas afectadas
None.
Intel C/C++ compilador intrínseco
VPDPWSUD __m128i _mm_dpwsud_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWSUD __m256i _mm256_dpwsud_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPWSUDS __m128i _mm_dpwsuds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWSUDS __m256i _mm256_dpwsuds_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPWUSD __m128i _mm_dpwusd_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWUSD __m256i _mm256_dpwusd_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPWUSDS __m128i _mm_dpwusds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWUSDS __m256i _mm256_dpwusds_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPWUUD __m128i _mm_dpwuud_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWUUD __m256i _mm256_dpwuud_epi32 (__m256i __W, __m256i __A, __m256i __B);
VPDPWUUDS __m128i _mm_dpwuuds_epi32 (__m128i __W, __m128i __A, __m128i __B);
VPDPWUUDS __m256i _mm256_dpwuuds_epi32 (__m256i __W, __m256i __A, __m256i __B);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción".