Unformatted text preview: estination operand (see Figure 11-6). The UNPCKLPD (unpack and interleave low packed double-precision floating-point values) instruction performs an interleaved unpack of the low values from the source and destination operands and stores the result in the destination operand (see Figure 11-7). DEST X1 X0 SRC Y1 Y0 DEST Y1 X1 Figure 11-6. UNPCKHPD Instruction, High Unpack and Interleave Operation Vol. 1 11-11 PROGRAMMING WITH STREAMING SIMD EXTENSIONS 2 (SSE2) DEST X1 X0 SRC Y1 Y0 DEST Y0 X0 Figure 11-7. UNPCKLPD Instruction, Low Unpack and Interleave Operation 22.214.171.124 SSE2 Conversion Instructions SSE2 conversion instructions (see Figure 11-8) support packed and scalar conversions between: Double-precision and single-precision floating-point formats Double-precision floating-point and doubleword integer formats Single-precision floating-point and doubleword integer formats Conversion between double-precision and single-precision floating-points values -- The following instructions convert operands between double-precision and single-precision floating-point formats. The operands being operated on are contained in XMM registers or memory (at most, one operand can reside in memory; the destination is always an MMX register). The CVTPS2PD (convert packed single-precision floating-point values to packed double-precision floating-point values) instruction converts two packed singleprecision floating-point values to two double-precision floating-point values. The CVTPD2PS (convert packed double-precision floating-point values to packed single-precision floating-point values) instruction converts two packed doubleprecision floating-point values to two single-precision floating-point values. When a conversion is inexact, the result is rounded according to the rounding mode selected in the MXCSR register. The CVTSS2SD (convert scalar single-precision floating-point value to scalar doubleprecision floating-point value) instruction converts a single-precision floating-point value to a double-precision floating-point value. The CVTSD2SS (convert scalar double-precision floating-point value to scalar singleprecision floating-point value) instruction converts a double-precision floating-point value to a single-precision floating-point value. When the conversion is inexact, the result is rounded according to the rounding mode selected in the MXCSR register. 11-12 Vol. 1 PROGRAMMING WITH STREAMING SIMD EXTENSIONS 2 (SSE2) I 2S SI SS S2 T S CV TT CV SS I2 TS CV Single-Precision Floating Point (XMM/mem)
I 2P I PS S2P T CV TTP CV CV CV TPS TT 2D PS Q 2D Q Q D VT C S 2P C VT PI 2P S CVTSD2SS CVTPD2PS 4 Doubleword Integer (XMM/mem) CVTSS2SD CVTPS2PD Doubleword Integer (r32/mem) 2 Doubleword Integer (MMX/mem)
D 2P PI VT C C VT D Q 2P C CV VT TT PD PD 2P 2P I I Double-Precision Floating-Point (XMM/mem) Figure 11-8. SSE and SSE2 Conversion Instructions
Conversion between double-precision floating-point values and doubleword integers -- The following instructions convert...
View Full Document
- Winter '11
- X86, Intel corporation, 64-bit mode, fpu floating-point exception, FPU Control Instructions