Intel System MMX Command & Document Description
MMX instruction
Intel
-------------------------------------------------- ------------------------------
Intel System MMX Command & Document Description
EMMS
MMX status empty:
Put the FP feature word empty (all), so that the subsequent floating point command can use floating point registers, other MMX instructions automatically set FP all 0. This instruction should end and call routines that can contain the FP instructions. Time to use to clear the MMX status.
MOVD MM, R / M32
MOVD R / M32, MM Transfer 32-bit data:
Move 32-bit data from integer register / memory to the MMX register, and reverse move. MOVD cannot move data between MMX registers, between memory and integer registers. When the target operand is MMX register, 32-bit The source operand writes the low 32 bit of the target register. The target register "0 extension" is 64 bits. When the source operand is the MMX register, the low 32 bit of the register is written to the target operand.
MOVQ MM, R / M64
MOVQ R.M64, MM Transfer 64-bit data:
Move 64-bit data from integer registers / memory to MMX registers, and reverse movement. The target operand and source operand can be MMX registers, 64-bit memory operations. But MOVQ cannot perform data transfer between memory and memory. .
Packsswb mm, mm / m64
Packssdw mm, mm / m64
Symbolic saturation data into group:
The Symbol groups in the MMX register and MMX register / memory cells becomes a symbolic byte group of the MMX register. And the symbolic double word group in the MMX register and MMX register / memory cells becomes a symbol of the MMX register. List. (Note 1)
Packuswb mm, mm / m64 unsigned saturation mode data into group
The symbolic group in the MMX register and the MMX register / memory unit becomes the unsigned byte group of the MMX register. (Note 1)
PADDB MM, MM / M64
Paddw mm, mm / m64
Paddd mm, mm / m64
Surrounded mode data group plus:
Putting the byte group (group, double word group) in the MMX register / memory unit to the MMX register (Note 1)
Paddsb mm, mm / m64
Paddsw mm, mm / m64
Saturation is symbolic data group plus:
Press saturation to add a symbolic byte group in the MMX Register / Memory unit to a symbolic byte group (word group) data in the MMX register. (Note 1)
Paddusb mm, mm / m64
Paddusw mm, mm / m64
Saturation is not symbolic data group plus:
Press saturation to add unsigned byte groups in the MMX register / memory cell to an unsigned byte group (word group) data in the MMX register. (Note 1)
Pand mm, mm / m64
Charter logic
The 64-bit data in the MMX register / memory unit is operated in the MMX register.
Pandn mm, mm / mm / m64
Characteristic logic and non-:
Reverse 64-bit values in the MMX register, and then the retrograde MMX register is operated with 64-bit data in the MMX register / memory cell, and the result is stored in the MMX register.
PCMPEQB mm, MM / M64
PCMPEQW MM, MM / M64
PCMPEQD MM, MM / M64
Equal comparison of group data:
The MMX register is compared to the byte group (word group, two-word group) data in the MMX register / memory cell.
This instruction compares the target operand and the corresponding data element of the source operand, and the corresponding data element of the target register is set to all 1, otherwise it is all 0.
EG: PCMPEQE MM, MM / M64
MM? 0000000000000000111 0111000111000111
MM / M64? 11111110000001100 0111000000001100 01110000000000004111
Result mm? 00000000000000000000 1111111111111111
PCMPGTB MM, MM / M64
PCMPGTW MM, MM / M64
PCMPGTD MM, MM / M64
Equal comparison of group data:
The MMX register is greater than comparison with the byte group (inquiry, double-word group) data in the MMX register / memory cell.
This instruction compares the target operand and the corresponding data element of the source operand, which is greater than that the corresponding data element of the target register is set to all 1, otherwise it is set to all 0. (refer to the previous one) PMADDWD MM, MM / M64 data set (字) Multiply:
MMX registers multiplied with the group data in the MMX register / memory cell, and then add 32-bit results to the MMX register as a double word.
EG: PMADDWD MM, MM / M64
MM? 011100011100111 01110011100111
Operation * * * *
MM, MM / M64? 10000000000000000000000000000000000000000000000000000000000000000000000000000000000
Operation / _____ ____ / / ______ _____ / /
mm? 1100100011100000000000000000000
Pmulhw mm, mm / m64
The multiplication of the group data (the word group) takes the high position:
MMX register is multiplied by the symbolic group data in the MMX register / memory cell, and then stores the high 16 bits of the result into the MMX register.
EG: Pmulhw mm, mm / m64
MM? 011100011100111 01110011100111
Operation * * * *
MM / M64?? 1000000000000000000000000000000000000000000000000000000000000000000000000
Operation HIGH ORDER HIGH ORDER HIGH ORDER HIGH ORDER
MM? 11000111001011100 0000000111000111
Pmullw mm, mm / m64
The multiplication of group data (in the field) is taken:
MMX register is multiplied by the symbolic group data in the MMX register / memory cell, and then stores the low 16 bits of the result in the MMX register. (Refer to the previous one)
POR MM, MM / M64 bitmap or:
The 64-bit data in the MMX register / memory unit is or operated in the MMX register.
PSLLW MM, MM / M64
PSLLD MM, MM / M64
PSLLQ MM, MM / M64
PSLLW MM, IMM8
PSLLD MM, IMM8
PSLLQ MM, IMM8
The logical left shift of group data:
Press the word (double word, four words) data in the MMX register, and move the number of points specified by the MMX register / memory unit, and move into 0.
Press the word (double word, four words) data in the MMX register, and the number of points specified by 8-bit immediately specified, and the low move into 0.
PSRAW MM, MM / M64
PSRAD MM, MM / M64
PSRAW MM, IMM8
Psrad MM, IMM8 in group data arithmetic right shift:
Keep the symbol bits in the MMX register (double word) data in the MMX register / memory unit.
Press the word (double word) data in the MMX register to the right of the number of pieces specified by the 8-digit number, keep the symbol bit.
PSRLW MM, MM / M64
PSRLD MM, MM / M64
PSRLQ MM, MM / M64
PSRLW MM, IMM8
PSRLD MM, IMM8
PSRLQ MM, IMM8 logic right movement of group data:
Press the number of words (dual words) in the MMX register to the right of the number specified by the MMX register / memory unit, and the transfer bit is filled with 0.
Press the word (dual word) data in the MMX register to the right of the number of pieces specified by the 8-digit number, and the transfer bit is filled with 0.
PSUBB MM, MM / M64
PSUBW MM, MM / M64
PSUBD MM, MM / M64 surrounded by group data:
From the MMX register, press byte (word, double word) to subtract the byte (word, double word) group in the MMX register / memory cell. (Note 1)
PSUBSB mm, MM / M64
PSUBSW MM, MM / M64
Saturation is symbolic to group data reduction:
Decreasing the symbol-byte (word) group data in the MMX register / memory cell from the MMX register. (Note 1)
PSUBUSB MM, MM / M64
PSUBUSW MM, MM / M64 saturation method has symbolic group data reduction:
Decreasing the unsigned byte (word) group data in the MMX register / memory cell from the unsigned grouping byte (word) group data in the MMX register. (Note 1)
Punpckhbw mm, mm / m64
Punpckhwd mm, mm / m64
PUNPCKHDQ MM, MM / M64 High Section Data Decomposition: This instruction alternates the high half of the data element of the source operand and the target operand, and the low half of the data element is ignored.
EG: PUNPCKHBW MM, MM / M64
PUNPCKLBW MM, MM / M64
Punpcklwd mm, mm / m64
PUNPCKLDQ MM, MM / M64 low in group data decomposition:
This instruction alternates the low half of the source operand and the number of data elements of the target operand, and the high half of the data element is ignored. (Refer to the previous one)
PXOR MM, MM / M64 is logical or:
The 64-bit data in the MMX register / memory cell is different or the result is stored in the MMX register.