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

Instruction: PMULHRIW dest, src

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

Notes: The PMULHRIW instruction are intended to give a result of the
form a 16x16 bit multiply with the LSB rounded before truncating to 16
The SRC can be either an MMX register or a 64-bit memory
operand. The destination is an MMX register, depending on the SRC.
The intent of the PMULHRIW instruction is the same as the PMULHRW
instrucction except that both sources are preserved

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:

PMULHRIW mm,mm/m64 0FH 5DH PostByte

Copyright by InternetNightmare 2005-2006