The SSE2 packed and scalar double-precision floating-point instructions operate on double-precision floating-point operands.
The SSE2 data movement instructions move double-precision floating-point data between XMM registers and memory.
Table 3–36 SSE2 Data Movement Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
MOVAPD |
move two aligned packed double-precision floating-point values between XMM registers and memory | ||
MOVHPD |
move high packed double-precision floating-point value to or from the high quadword of an XMM register and memory | ||
MOVLPD |
move low packed single-precision floating-point value to or from the low quadword of an XMM register and memory | ||
MOVMSKPD |
extract sign mask from two packed double-precision floating-point values | ||
MOVSD |
move scalar double-precision floating-point value between XMM registers and memory. | ||
MOVUPD |
move two unaligned packed double-precision floating-point values between XMM registers and memory |
The SSE2 arithmetic instructions operate on packed and scalar double-precision floating-point operands.
Table 3–37 SSE2 Packed Arithmetic Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
ADDPD |
add packed double-precision floating-point values | ||
ADDSD |
add scalar double-precision floating-point values | ||
DIVPD |
divide packed double-precision floating-point values | ||
DIVSD |
divide scalar double-precision floating-point values | ||
MAXPD |
return maximum packed double-precision floating-point values | ||
MAXSD |
return maximum scalar double-precision floating-point value | ||
MINPD |
return minimum packed double-precision floating-point values | ||
MINSD |
return minimum scalar double-precision floating-point value | ||
MULPD |
multiply packed double-precision floating-point values | ||
MULSD |
multiply scalar double-precision floating-point values | ||
SQRTPD |
compute packed square roots of packed double-precision floating-point values | ||
SQRTSD |
compute scalar square root of scalar double-precision floating-point value | ||
SUBPD |
subtract packed double-precision floating-point values | ||
SUBSD |
subtract scalar double-precision floating-point values |
The SSE2 logical instructions operate on packed double-precision floating-point values.
Table 3–38 SSE2 Logical Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
ANDNPD |
perform bitwise logical AND NOT of packed double-precision floating-point values | ||
ANDPD |
perform bitwise logical AND of packed double-precision floating-point values | ||
ORPD |
perform bitwise logical OR of packed double-precision floating-point values | ||
XORPD |
perform bitwise logical XOR of packed double-precision floating-point values |
The SSE2 compare instructions compare packed and scalar double-precision floating-point values and return the results of the comparison to either the destination operand or to the EFLAGS register.
Table 3–39 SSE2 Compare Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
CMPPD |
compare packed double-precision floating-point values | ||
CMPSD |
compare scalar double-precision floating-point values | ||
COMISD |
perform ordered comparison of scalar double-precision floating-point values and set flags in EFLAGS register | ||
UCOMISD |
perform unordered comparison of scalar double-precision floating-point values and set flags in EFLAGS register |
The SSE2 shuffle and unpack instructions operate on packed double-precision floating-point operands.
Table 3–40 SSE2 Shuffle and Unpack Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
SHUFPD |
shuffle values in packed double-precision floating-point operands | ||
UNPCKHPD |
unpack and interleave the high values from two packed double-precision floating-point operands | ||
UNPCKLPD |
unpack and interleave the low values from two packed double-precision floating-point operands |
The SSE2 conversion instructions convert packed and individual doubleword integers into packed and scalar double-precision floating-point values (and vice versa). These instructions also convert between packed and scalar single-precision and double-precision floating-point values.
Table 3–41 SSE2 Conversion Instructions
Solaris Mnemonic |
Intel/AMD Mnemonic |
Description |
Notes |
---|---|---|---|
CVTDQ2PD |
convert packed doubleword integers to packed double-precision floating-point values | ||
CVTPD2DQ |
convert packed double-precision floating-point values to packed doubleword integers | ||
CVTPD2PI |
convert packed double-precision floating-point values to packed doubleword integers | ||
CVTPD2PS |
convert packed double-precision floating-point values to packed single-precision floating-point values | ||
CVTPI2PD |
convert packed doubleword integers to packed double-precision floating-point values | ||
CVTPS2PD |
convert packed single-precision floating-point values to packed double-precision floating-point values | ||
CVTSD2SI |
convert scalar double-precision floating-point values to a doubleword integer | ||
CVTSD2SS |
convert scalar double-precision floating-point values to scalar single-precision floating-point values | ||
CVTSI2SD |
convert doubleword integer to scalar double-precision floating-point value | ||
CVTSS2SD |
convert scalar single-precision floating-point values to scalar double-precision floating-point values | ||
CVTTPD2DQ |
convert with truncation packed double-precision floating-point values to packed doubleword integers | ||
CVTTPD2PI |
convert with truncation packed double-precision floating-point values to packed doubleword integers | ||
CVTTSD2SI |
convert with truncation scalar double-precision floating-point values to scalar doubleword integers |