Alasir Enterprises
Main Page >  Reference >  A Concise Guide to the MMX Technology  

 
Main Page
 
 
Reviews
 
Articles
 
Software
 
Reference
 
Motley
 
 
About Us
 
 
A Concise Guide to the MMX Technology

Paul V. Bolotoff
 
Release date: 31st of January 2005
Last modify date: 24th of January 2007

Contents:

 
ARITHMETICAL (17 instructions)

 
PADD (Packed ADD):
 
PADDB [0x0FFC]
PADDW [0x0FFD]
PADDD [0x0FFE]
 
src: mm, mem64
dst: mm
 
Add data elements of the source operand to data elements of the destination operand, wrap the result, and write to the destination operand. Packed byte (PADDB), packed word (PADDW), and packed doubleword (PADDD) data types are recognised.
 
 
PADDS (Packed ADD with Saturation):
 
PADDSB [0x0FEC]
PADDSW [0x0FED]
 
src: mm, mem64
dst: mm
 
Add signed data elements of the source operand to signed data elements of the destination operand, saturate the result, and write to the destination operand. Packed byte (PADDSB) and packed word (PADDSW) data types are recognised.
 
 
PADDUS (Packed ADD Unsigned with Saturation):
 
PADDUSB [0x0FDC]
PADDUSW [0x0FDD]
 
src: mm, mem64
dst: mm
 
Add unsigned data elements of the source operand to unsigned data elements of the destination operand, saturate the result, and write to the destination operand. Packed byte (PADDUSB) and packed word (PADDUSW) data types are recognised.
 
 
PSUB (Packed SUBtract):
 
PSUBB [0x0FF8]
PSUBW [0x0FF9]
PSUBD [0x0FFA]
 
src: mm, mem64
dst: mm
 
Subtract data elements of the source operand from data elements of the destination operand, wrap the result, and write to the destination operand. Packed byte (PSUBB), packed word (PSUBW), and packed doubleword (PSUBD) data types are recognised.
 
 
PSUBS (Packed SUBtract with Saturation):
 
PSUBSB [0x0FE8]
PSUBSW [0x0FE9]
 
src: mm, mem64
dst: mm
 
Subtract signed data elements of the source operand from signed data elements of the destination operand, saturate the result, and write to the destination operand. Packed byte (PSUBSB) and packed word (PSUBSW) data types are recognised.
 
 
PSUBUS (Packed SUBtract Unsigned with Saturation):
 
PSUBUSB [0x0FD8]
PSUBUSW [0x0FD9]
 
src: mm, mem64
dst: mm
 
Subtract unsigned data elements of the source operand from unsigned data elements of the destination operand, saturate the result, and write to the destination operand. Packed byte (PSUBUSB) and packed word (PSUBUSW) data types are recognised.
 
 
PMUL (Packed MULtiply):
 
PMULLW [0x0FD5]
PMULHW [0x0FE5]
 
src: mm, mem64
dst: mm
 
Multiply 4 signed words of the source operand by 4 signed words of the destination operand to produce 4 signed doublewords. Write a low-order (PMULLW) or high-order (PMULHW) signed word of of every signed doubleword to the destination operand.
 
 
PMADD (Packed Multiply and ADD):
 
PMADDWD [0x0FF5]
 
src: mm, mem64
dst: mm
 
Multiply 4 signed words of the source operand by 4 signed words of the destination operand to produce 4 signed doublewords. Add up 2 high-order signed doublewords and store the result in the higher doubleword of the destination operand. Add up 2 low-order signed doublewords and store the result in the lower doubleword of the destination operand.

 
LOGICAL (4 instructions)

 
PAND   (Packed [source] AND [destination])   [0x0FDB]
PANDN   (Packed [source] AND Not [destination])   [0x0FDF]
POR   (Packed [source] OR [destination])   [0x0FEB]
PXOR   (Packed [source] eXclusive OR [destination])   [0x0FEF]

src: mm, mem64
dst: mm
 
Perform bitwise logical operations on 64-bit data quanta. Results are stored in the destination operand.
 
src. bit dst. bit PAND PANDN POR PXOR
1 1 1 0 1 0
1 0 0 1 1 1
0 1 0 0 1 1
0 0 0 0 0 0

<< Previous page
 

Next page >>
 

Copyright (c) Paul V. Bolotoff, 2005-07. All rights reserved.
A full or partial reprint without a permission received from the author is prohibited.
 
Designed and maintained by Alasir Enterprises, 1999-2007
rhett from alasir.com, walter from alasir.com