Section courante

A propos

Section administrative du site

Assembleur 80x86

MPSADBW

SSE4.1 Compute Multiple Packed Sums of Absolute Difference

Syntaxe

MPSADBW dest,source,immediat

Description

Cette instruction permet d'effectuer le calcul de la somme de la différence absolue (SAD) d'une paire d'octets d'un groupe de 4 octets paires et produit 8 résultats SAD entreposé dans 8 entier contenu dans l'opérande de destination.

Algorithme

SRC_OFFSET ← immediat(1..0) x 32
DEST_OFFSET ← immediat(2) x 32
DEST_BYTE0 ← dest[DEST_OFFSET+7..DEST_OFFSET]
DEST_BYTE1 ← dest[DEST_OFFSET+15..DEST_OFFSET+8]
DEST_BYTE2 ← dest[DEST_OFFSET+23..DEST_OFFSET+16]
DEST_BYTE3 ← dest[DEST_OFFSET+31..DEST_OFFSET+24]
DEST_BYTE4 ← dest[DEST_OFFSET+39..DEST_OFFSET+32]
DEST_BYTE5 ← dest[DEST_OFFSET+47..DEST_OFFSET+40]
DEST_BYTE6 ← dest[DEST_OFFSET+55..DEST_OFFSET+48]
DEST_BYTE7 ← dest[DEST_OFFSET+63..DEST_OFFSET+56]
DEST_BYTE8 ← dest[DEST_OFFSET+71..DEST_OFFSET+64]
DEST_BYTE9 ← dest[DEST_OFFSET+79..DEST_OFFSET+72]
DEST_BYTE10 ← dest[DEST_OFFSET+87..DEST_OFFSET+80]
SRC_BYTE0 ← source[SRC_OFFSET+7..SRC_OFFSET]
SRC_BYTE1 ← source[SRC_OFFSET+15..SRC_OFFSET+8]
SRC_BYTE2 ← source[SRC_OFFSET+23..SRC_OFFSET+16]
SRC_BYTE3 ← source[SRC_OFFSET+31..SRC_OFFSET+24]

TEMP0 ← | DEST_BYTE0 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE1 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE2 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE3 - SRC_BYTE3 |
dest(15..0) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE1 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE2 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE3 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE4 - SRC_BYTE3 |
dest(31..16) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE2 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE3 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE4 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE5 - SRC_BYTE3 |
dest(47..32) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE3 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE4 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE5 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE6 - SRC_BYTE3 |
dest(63..48) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE4 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE5 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE6 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE7 - SRC_BYTE3 |
dest(79..64) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE5 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE6 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE7 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE8 - SRC_BYTE3 |
dest(95..80) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE6 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE7 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE8 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE9 - SRC_BYTE3 |
dest(111..96) ← TEMP0 + TEMP1 + TEMP2 + TEMP3
TEMP0 ← | DEST_BYTE7 - SRC_BYTE0 |
TEMP1 ← | DEST_BYTE8 - SRC_BYTE1 |
TEMP2 ← | DEST_BYTE9 - SRC_BYTE2 |
TEMP3 ← | DEST_BYTE10 - SRC_BYTE3 |
dest(127..112) ← TEMP0 + TEMP1 + TEMP2 + TEMP3

Mnémonique

Instruction Opcode Description
MPSADBW xmm1,xmm2/m128,imm8 66h 0Fh 3Ah 42h /r ib Cette instruction permet d'effectuer le calcul de la somme de la différence absolue (SAD) d'une paire d'octets d'un groupe de 4 octets paires et produit 8 résultats SAD entreposé dans 8 entier contenu dans l'opérande de destination.

Références

Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 820 à 823.

Dernière mise à jour : Samedi, le 20 septembre 2014