| Assembleur 80x86 | PMULHRSW |
|---|---|
| SSSE3 | Packed Multiply High with Round and Scale |
Syntaxe
| PMULHRSW destination, source |
Description
Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'opérande de destination avec l'opérande source et produit un résultat d'entiers de 32 bits dans l'opérande de destination.
Algorithme
|
SI taille de l'opérande = 64 bits ALORS temp0(31..0) ← INT32 ((destination(15..0) x source(15..0)) >> 14) + 1 temp1(31..0) ← INT32 ((destination(31..16) x source(31..16)) >> 14) + 1 temp2(31..0) ← INT32 ((destination(47..32) x source(47..32)) >> 14) + 1 temp3(31..0) ← INT32 ((destination(63..48) x source(63..48)) >> 14) + 1 destination(15..0) ← temp0(16..1) destination(31..16) ← temp1(16..1) destination(47..32) ← temp2(16..1) destination(63..48) ← temp3(16..1) SINON SI taille de l'opérande = 128 bits ALORS temp0(31..0) ← INT32 ((destination(15..0) x source(15..0)) >> 14) + 1 temp1(31..0) ← INT32 ((destination(31..16) x source(31..16)) >> 14) + 1 temp2(31..0) ← INT32 ((destination(47..32) x source(47..32)) >> 14) + 1 temp3(31..0) ← INT32 ((destination(63..48) x source(63..48)) >> 14) + 1 temp4(31..0) ← INT32 ((destination(79..64) x source(79..64)) >> 14) + 1 temp5(31..0) ← INT32 ((destination(95..80) x source(95..80)) >> 14) + 1 temp6(31..0) ← INT32 ((destination(111..96) x source(111..96)) >> 14) + 1 temp7(31..0) ← INT32 ((destination(127..112) x source(127..112)) >> 14) + 1 destination(15..0) ← temp0(16..1) destination(31..16) ← temp1(16..1) destination(47..32) ← temp2(16..1) destination(63..48) ← temp3(16..1) destination(79..64) ← temp4(16..1) destination(95..80) ← temp5(16..1) destination(111..96) ← temp6(16..1) destination(127..112) ← temp7(16..1) FIN SI |
Mnémonique
| Instruction | Opcode | Description |
|---|---|---|
| PMULHRSW mm1,mm2/m64 | 0Fh 38h 0Bh /r | Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'opérande de destination avec l'opérande source et produit un résultat d'entiers de 32 bits dans l'opérande de destination. |
| PMULHRSW xmm1,xmm2/m128 | 66h 0Fh 38h 0Bh /r | >Cette instruction permet d'effectuer multiplication vertical de chaque entier de 16 bits de l'opérande de destination avec l'opérande source et produit un résultat d'entiers de 32 bits dans l'opérande de destination. |
Références
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2B: Instruction Set Reference, N-Z, Edition Intel, Mars 2010, Publication No. 253667-034US, page 201 à 203.
Dernière mise à jour : Samedi, le 20 septembre 2014