Section courante

A propos

Section administrative du site

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