次のロード操作組込み関数とそれに対応する命令は、ストリーミング SIMD 拡張命令 2 (SSE2) をサポートするプロセッサ上で有効です。
SSE2 の組込み関数のプロトタイプは、ヘッダファイル emmintrin.h 内にあります。
__m128d _mm_load_pd(double const*dp)
(MOVAPD を使用) 2 つの倍精度浮動小数点値をロードします。アドレス
p は、16 バイトにアライメントが合っていなければなりません。
r0 := p[0]
r1 := p[1]
__m128d _mm_load1_pd(double const*dp)
(MOVSD とシャッフリングを使用) 1 つの倍精度浮動小数点値をロードして、その値を両方の要素にコピーします。アドレス
p は、16 バイトにアライメントが合っていなくてもかまいません。
r0 := *p
r1 := *p
__m128d _mm_loadr_pd(double const*dp)
(MOVAPD とシャッフリングを使用) 2 つの倍精度浮動小数点値を逆順でロードします。アドレス
p は、16 バイトにアライメントが合っていなければなりません。
r0 := p[1]
r1 := p[0]
__m128d _mm_loadu_pd(double const*dp)
(MOVUPD を使用) 2 つの倍精度浮動小数点値をロードします。アドレス
p は、16 バイトにアライメントが合っていなくてもかまいません。
r0 := p[0]
r1 := p[1]
__m128d _mm_load_sd(double const*dp)
(MOVSD を使用) 1 つの倍精度浮動小数点値をロードします。上位の倍精度浮動小数点値は
0 に設定されます。アドレス p は、16 バイトにアライメントが合っていなくてもかまいません。
r0 := *p
r1 := 0.0
__m128d _mm_loadh_pd(__m128d a, double const*dp)
(MOVHPD を使用) 結果の上位の倍精度浮動小数点値として、1
つの倍精度浮動小数点値をロードします。下位の倍精度浮動小数点値は、a からそのまま渡されます。アドレス
p は、16 バイトにアライメントが合っていなくてもかまいません。
r0 := a0
r1 := *p
__m128d _mm_loadl_pd(__m128d a, double const*dp)
(MOVLPD を使用) 結果の下位の倍精度浮動小数点値として、1
つの倍精度浮動小数点値をロードします。上位の倍精度浮動小数点値は、a からそのまま渡されます。アドレス
p は、16 バイトにアライメントが合っていなくてもかまいません。
r0 := *p
r1 := a1