Load Operations for Streaming SIMD Extensions

 

__m128d _mm_load_pd (double *p)

(uses MOVAPD)

Loads two DP FP values. The address p must be 16-byte aligned.

r0 := p[0]

r1 := p[1]

 

__m128d _mm_load1_pd (double *p)

(uses MOVSD + shuffling)

Loads a single DP FP value, copying to both elements. The address p need not be 16-byte aligned.

r0 := *p

r1 := *p

 

__m128d _mm_loadr_pd (double *p)

(uses MOVAPD + shuffling)

Loads two DP FP values in reverse order. The address p must be 16-byte aligned.

r0 := p[1]

r1 := p[0]

 

__m128d _mm_loadu_pd (double *p)

(uses MOVUPD)

Loads two DP FP values. The address p need not be 16-byte aligned.

r0 := p[0]

r1 := p[1]

 

__m128d _mm_load_sd (double *p)

(uses MOVSD)

Loads a DP FP value. The upper DP FP is set to zero. The address p need not be 16-byte aligned.

r0 := *p

r1 := 0.0

 

__m128d _mm_loadh_pd ( __m128d a, double *p)

(uses MOVHPD)

Loads a DP FP value as the upper DP FP value of the result. The lower DP FP value is passed through from a. The address p need not be 16-byte aligned.

r0 := a0

r1 := *p

 

__m128d _mm_loadl_pd ( __m128d a, double *p)

(uses MOVLPD)

Loads a DP FP value as the lower DP FP value of the result. The upper DP FP value is passed through from a. The address p need not be 16-byte aligned.

r0 := *p

r1 := a1