Intel 64 and IA-32 Architectures Software Developers Manual Volume 2B, Instruction Set Reference, N-Z

Vol. 2B 4-27
INSTRUCTION SET REFERENCE, N-Z
nation operand. If a signed word integer value is beyond the range of a signed byte
integer (that is, greater than 7FH for a positive integer or greater than 80H for a
negative integer), the saturated signed byte integer value of 7FH or 80H, respec-
tively, is stored in the destination.
The PACKSSDW instruction packs 2 or 4 signed doublewords from the destination
operand (first operand) and 2 or 4 signed doublewords from the source operand
(second operand) into 4 or 8 signed words in the destination operand (see Figure 4-1).
If a signed doubleword integer value is beyond the range of a signed word (that is,
greater than 7FFFH for a positive integer or greater than 8000H for a negative
integer), the saturated signed word integer value of 7FFFH or 8000H, respectively, is
stored into the destination.
The PACKSSWB and PACKSSDW instructions operate on either 64-bit or 128-bit
operands. When operating on 64-bit operands, the destination operand must be an
MMX technology register and the source operand can be either an MMX technology
register or a 64-bit memory location. When operating on 128-bit operands, the desti-
nation operand must be an XMM register and the source operand can be either an
XMM register or a 128-bit memory location.
In 64-bit mode, using a REX prefix in the form of REX.R permits this instruction to
access additional registers (XMM8-XMM15).
Operation
PACKSSWB instruction with 64-bit operands:
DEST[7:0] SaturateSignedWordToSignedByte DEST[15:0];
DEST[15:8] SaturateSignedWordToSignedByte DEST[31:16];
DEST[23:16] SaturateSignedWordToSignedByte DEST[47:32];
DEST[31:24] SaturateSignedWordToSignedByte DEST[63:48];
DEST[39:32] SaturateSignedWordToSignedByte SRC[15:0];
DEST[47:40] SaturateSignedWordToSignedByte SRC[31:16];
DEST[55:48] SaturateSignedWordToSignedByte SRC[47:32];
DEST[63:56] SaturateSignedWordToSignedByte SRC[63:48];
PACKSSDW instruction with 64-bit operands:
DEST[15:0] SaturateSignedDoublewordToSignedWord DEST[31:0];
DEST[31:16] SaturateSignedDoublewordToSignedWord DEST[63:32];
DEST[47:32] SaturateSignedDoublewordToSignedWord SRC[31:0];
DEST[63:48] SaturateSignedDoublewordToSignedWord SRC[63:32];
PACKSSWB instruction with 128-bit operands:
DEST[7:0] SaturateSignedWordToSignedByte (DEST[15:0]);
DEST[15:8] SaturateSignedWordToSignedByte (DEST[31:16]);
DEST[23:16] SaturateSignedWordToSignedByte (DEST[47:32]);
DEST[31:24] SaturateSignedWordToSignedByte (DEST[63:48]);
DEST[39:32] SaturateSignedWordToSignedByte (DEST[79:64]);
DEST[47:40] SaturateSignedWordToSignedByte (DEST[95:80]);