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

Instruction: PMACHRIW dest, src

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

Notes: The PMACHRIW multiplies the two source operands using the
method described for PMULHRW, and then accumulates the result with
the value in the implied destination register using wrap-around
arithmetic. The final result is placed in the implied DEST register.
The DEST must be an MMX register. The SRC must be a 64-bit
memory operand. The destination operand is an implied MMX register
that depends on the DEST.

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:

PMACHRIW mm,m64 0FH 5EH PostByte

Copyright by InternetNightmare 2005-2006