Load Operations (Floating-Point SSE2 Intrinsics)
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