Cyrix EMMX Instructions
Cyrix EMMX Instructions — Overview
In 1997, Cyrix extended Intel's MMX
set with their own variation, called EMMX
registers, allowing some instructions to store results in
a register that was not one of the source registers. This saves you a reload when you'll be performing a number
of different operations on the same inputs, because by default all MMX instructions destroy the contents of
one of their registers by overwriting it with the output.
EMMX Added 12 new instructions. Some of the functionality of these instructions later made its way into later
instruction sets, but none of them carried on
EMMX — Implied Registers
EMMX Instructions make use of
Registers. These destinations
are based on the source registers. Here's a list of the registers, and their implied destinations.
If both a register and its implied destination are used, one of them will be overwritten just like
a normal MMX
EMMX Instructions — OpCode List(descriptions are skimpy, need to flesh out).
paddsiw - Packed Add with Saturation.
psubsiw - Packed Subtract with Saturation.
paveb - Packed Average.
pdistib - Packed Distance and Accumulate.
pmachriw - Packed Multiply and Accumulate with Rounding.
pmagw - Packed Magnitude.
pmulhrw - Packed Multiply High with Rounding.
pmulhriw - Packed Multiply High with Rounding using implied destination.
pmvzb - Packed Conditional Move (zero).
pmvnzb - Packed Conditional Move (not zero).
pmvlzb - Packed Conditional Move (less than zero).
pmvgezb - Packed Conditional Move (greater than or equal to zero).