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