x86 Assembly Language Reference Manual

Exit Print View

Updated: December 2014
 
 

3.18.1 SSE2 Packed and Scalar Double-Precision Floating-Point Instructions

The SSE2 packed and scalar double-precision floating-point instructions operate on double-precision floating-point operands.

3.18.1.1 SSE2 Data Movement Instructions

The SSE2 data movement instructions move double-precision floating-point data between XMM registers and memory.

Table 3-49  SSE2 Data Movement Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
movapd
MOVAPD
move two aligned packed double-precision floating-point values between XMM registers and memory
movhpd
MOVHPD
move high packed double-precision floating-point value to or from the high quadword of an XMM register and memory
movlpd
MOVLPD
move low packed single-precision floating-point value to or from the low quadword of an XMM register and memory
movmskpd
MOVMSKPD
extract sign mask from two packed double-precision floating-point values
movsd
MOVSD
move scalar double-precision floating-point value between XMM registers and memory.
movupd
MOVUPD
move two unaligned packed double-precision floating-point values between XMM registers and memory

3.18.1.2 SSE2 Packed Arithmetic Instructions

The SSE2 arithmetic instructions operate on packed and scalar double-precision floating-point operands.

Table 3-50  SSE2 Packed Arithmetic Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
addpd
ADDPD
add packed double-precision floating-point values
addsd
ADDSD
add scalar double-precision floating-point values
divpd
DIVPD
divide packed double-precision floating-point values
divsd
DIVSD
divide scalar double-precision floating-point values
maxpd
MAXPD
return maximum packed double-precision floating-point values
maxsd
MAXSD
return maximum scalar double-precision floating-point value
minpd
MINPD
return minimum packed double-precision floating-point values
minsd
MINSD
return minimum scalar double-precision floating-point value
mulpd
MULPD
multiply packed double-precision floating-point values
mulsd
MULSD
multiply scalar double-precision floating-point values
sqrtpd
SQRTPD
compute packed square roots of packed double-precision floating-point values
sqrtsd
SQRTSD
compute scalar square root of scalar double-precision floating-point value
subpd
SUBPD
subtract packed double-precision floating-point values
subsd
SUBSD
subtract scalar double-precision floating-point values

3.18.1.3 SSE2 Logical Instructions

The SSE2 logical instructions operate on packed double-precision floating-point values.

Table 3-51  SSE2 Logical Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
andnpd
ANDNPD
perform bitwise logical AND NOT of packed double-precision floating-point values
andpd
ANDPD
perform bitwise logical AND of packed double-precision floating-point values
orpd
ORPD
perform bitwise logical OR of packed double-precision floating-point values
xorpd
XORPD
perform bitwise logical XOR of packed double-precision floating-point values

3.18.1.4 SSE2 Compare Instructions

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-52  SSE2 Compare Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
cmppd
CMPPD
compare packed double-precision floating-point values
cmpsd
CMPSD
compare scalar double-precision floating-point values
comisd
COMISD
perform ordered comparison of scalar double-precision floating-point values and set flags in EFLAGS register
ucomisd
UCOMISD
perform unordered comparison of scalar double-precision floating-point values and set flags in EFLAGS register

3.18.1.5 SSE2 Shuffle and Unpack Instructions

The SSE2 shuffle and unpack instructions operate on packed double-precision floating-point operands.

Table 3-53  SSE2 Shuffle and Unpack Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
shufpd
SHUFPD
shuffle values in packed double-precision floating-point operands
unpckhpd
UNPCKHPD
unpack and interleave the high values from two packed double-precision floating-point operands
unpcklpd
UNPCKLPD
unpack and interleave the low values from two packed double-precision floating-point operands

3.18.1.6 SSE2 Conversion Instructions

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-54  SSE2 Conversion Instructions
Oracle Solaris Mnemonic
Intel/AMD Mnemonic
Description
Notes
cvtdq2pd
CVTDQ2PD
convert packed doubleword integers to packed double-precision floating-point values
cvtpd2dq
CVTPD2DQ
convert packed double-precision floating-point values to packed doubleword integers
cvtpd2pi
CVTPD2PI
convert packed double-precision floating-point values to packed doubleword integers
cvtpd2ps
CVTPD2PS
convert packed double-precision floating-point values to packed single-precision floating-point values
cvtpi2pd
CVTPI2PD
convert packed doubleword integers to packed double-precision floating-point values
cvtps2pd
CVTPS2PD
convert packed single-precision floating-point values to packed double-precision floating-point values
cvtsd2si
CVTSD2SI
convert scalar double-precision floating-point values to a doubleword integer
cvtsd2ss
CVTSD2SS
convert scalar double-precision floating-point values to scalar single-precision floating-point values
cvtsi2sd
CVTSI2SD
convert doubleword integer to scalar double-precision floating-point value
cvtss2sd
CVTSS2SD
convert scalar single-precision floating-point values to scalar double-precision floating-point values
cvttpd2dq
CVTTPD2DQ
convert with truncation packed double-precision floating-point values to packed doubleword integers
cvttpd2pi
CVTTPD2PI
convert with truncation packed double-precision floating-point values to packed doubleword integers
cvttsd2si
CVTTSD2SI
convert with truncation scalar double-precision floating-point values to scalar doubleword integers