CPU: Cyrix with Extended MMX Instruction Set
Type of Instruction: User

Instruction: PMULHRW dest, src

dest[15..0] <- (dest[15..0]*src[15..0] + 00004000H)[30..15]
dest[31..16] <- (dest[31..16]*src[31..16] + 00004000H)[30..15]
dest[47..32] <- (dest[47..32]*src[47..32] + 00004000H)[30..15]
dest[63..48] <- (dest[63..48]*src[63..48] + 00004000H)[30..15]

Notes: The PMULHRW instruction are intended to give a result of the
form a 16x16 bit multiply with the LSB rounded before truncating to 16
bits. This is in contrast to the PMULHW instruction which gives a
resultof the form ss.14 with no rounding.
as the PADDSW instruction, except that it preserves both source
The SRC can be either an MMX register or a 64-bit memory
operand. The destination is an MMX register.

Flags Affected: None


RM PM VM SMM Description
#GP(0) If Illegal memory operands EA in CS,DS,ES,FS,GS
#SS(0) If Illegal memory operands EA in SS
#PF(fcode) If page fault
#AC #AC If unaligned memory reference then alignment
check enabled and in ring 3.
#UD #UD #UD #UD If CR0.EM = 1
#NM #NM #NM #NM If CR0.TS = 1
#MF #MF #MF #MF If pending FPU Exception
#13 #13 If any part of the operand lies outside of the
EA space from 0 to FFFFH
COP & Times:

PMULHRW mm,mm/m64 0FH 59H PostByte

Copyright by InternetNightmare 2005-2006