ストリーミングSIMD拡張命令2 のストア操作

次のストア操作組込み関数とそれに対応する命令は、ストリーミング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