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