次のストア操作組込み関数とそれに対応する命令は、ストリーミング SIMD 拡張命令 2 をサポートするプロセッサ上で有効です。
ストリーミング SIMD 拡張命令 2 の組込み関数のプロトタイプは、ヘッダファイル emmintrin.h 内にあります。
void _mm_store_sd(double *dp, __m128d a)
(MOVSD を使用) a の下位の倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。
*dp := a0
void _mm_store1_pd(double *dp, __m128d a)
(MOVAPD とシャッフリングを使用) a の下位の倍精度浮動小数点値を 2 回ストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] := a0
dp[1] := a0
void _mm_store_pd(double *dp, __m128d a)
(MOVAPD を使用) 2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] := a0
dp[1] := a1
void _mm_storeu_pd(double *dp, __m128d a)
(MOVUPD を使用) 2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。
dp[0] := a0
dp[1] := a1
void _mm_storer_pd(double *dp, __m128d a)
(MOVAPD とシャッフリングを使用) 2 つの倍精度浮動小数点値を逆順でストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。
dp[0] := a1
dp[1] := a0
void _mm_storeh_pd(double *dp, __m128d a)
(MOVHPD を使用) a の上位の倍精度浮動小数点値をストアします。
*dp := a1
void _mm_storel_pd(double *dp, __m128d a)
(MOVLPD を使用) a の下位の倍精度浮動小数点値をストアします。
*dp := a0