Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
For an explanation of the syntax used in code samples in this topic, see Floating-Point Intrinsics Using Streaming SIMD Extensions.
SSE2 intrinsics use the __m128, __m128i, and __m128d data types, which are not supported on Itanium Processor Family (IPF) processors. Any SSE2 intrinsics that use the __m64 data type are not supported on x64 processors.
The emmintrin.h header file contains the declarations for the SSE2 instructions intrinsics.
__m128d _mm_load_pd (double *p);
MOVAPD
Loads two double-precision, floating-point values. The address p must be 16-byte aligned.
r0 := p[0]
r1 := p[1]
__m128d _mm_load1_pd (double *p);
(MOVSD + shuffling)
Loads a single double-precision, floating-point value, copying to both elements. The address p does not need to be 16-byte aligned.
r0 := *p
r1 := *p
__m128d _mm_loadr_pd (double *p);
(MOVAPD + shuffling)
Loads two double-precision, floating-point values in reverse order. The address p must be 16-byte aligned.
r0 := p[1]
r1 := p[0]
__m128d _mm_loadu_pd (double *p);
MOVUPD
Loads two double-precision, floating-point values. The address p does not need to be 16-byte aligned.
r0 := p[0]
r1 := p[1]
__m128d _mm_load_sd (double *p);
MOVSD
Loads a double-precision, floating-point value. The upper double-precision, floating-point is set to zero. The address p does not need to be 16-byte aligned.
r0 := *p
r1 := 0.0
__m128d _mm_loadh_pd (__m128d a, double *p);
MOVHPD
Loads a double-precision, floating-point value as the upper double-precision, floating-point value of the result. The lower double-precision, floating-point value is passed through from a. The address p does not need to be 16-byte aligned.
r0 := a0
r1 := *p
__m128d _mm_loadl_pd (__m128d a, double *p);
MOVLPD
Loads a double-precision, floating-point value as the lower double-precision, floating-point value of the result. The upper double-precision, floating-point value is passed through from a. The address p does not need to be 16-byte aligned.
r0 := *p
r1 := a1
See Also
Reference
Floating-Point Memory and Initialization Operations Using Streaming SIMD Extensions 2