ストリーミング SIMD 拡張命令 2 の浮動小数点ストア操作

次のストア操作組み込み関数とそれに対応する命令は、ストリーミング SIMD 拡張命令 2 (SSE2) をサポートするプロセッサー上で有効です。

ストア組み込み関数は、初期化したデータを、指定したアドレスに割り当てます。

次の表の組み込み関数名をクリックすると、その組み込み関数の詳細が表示されます。

各組み込み関数の詳細には、戻り値を説明した表が含まれています。p[n] は、結果の要素 n へのアクセスを示します。

SSE2 の組み込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

サンプルコード Double Complex では、_mm_store_pd 組み込み関数の使用方法を紹介しています。

組み込み関数名 操作 対応する SSE2 命令
_mm_stream_pd ストア MOVNTPD
_mm_store_sd a の下位の倍精度浮動小数点値をストアする MOVSD
_mm_store1_pd a の下位の倍精度浮動小数点値を 2 回ストアする MOVAPD + Shuffling
_mm_store_pd 2 つの倍精度浮動小数点値をストアする MOVAPD
_mm_storeu_pd 2 つの倍精度浮動小数点値をストアする MOVUPD
_mm_storer_pd 2 つの倍精度浮動小数点値を逆順でストアする MOVAPD + Shuffling
_mm_storeh_pd a の上位の倍精度浮動小数点値をストアする MOVHPD
_mm_storel_pd a の下位の倍精度浮動小数点値をストアする MOVLPD

 

void _mm_store_sd(double *dp, __m128d a)

a の下位の倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。

*dp
a0

 

void _mm_store1_pd(double *dp, __m128d a)

a の下位の倍精度浮動小数点値を 2 回ストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。

dp[0] dp[1]
a0 a0

 

void _mm_store_pd(double *dp, __m128d a)

2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。

dp[0] dp[1]
a0 a1

 

void _mm_storeu_pd(double *dp, __m128d a)

2 つの倍精度浮動小数点値をストアします。アドレス dp は、16 バイトにアライメントが合っていなくてもかまいません。

dp[0] dp[1]
a0 a1

 

void _mm_storer_pd(double *dp, __m128d a)

2 つの倍精度浮動小数点値を逆順でストアします。アドレス dp は、16 バイトにアライメントが合っていなければなりません。

dp[0] dp[1]
a1 a0

 

void _mm_storeh_pd(double *dp, __m128d a)

a の上位の倍精度浮動小数点値をストアします。

*dp
a1

 

void _mm_storel_pd(double *dp, __m128d a)

a の下位の倍精度浮動小数点値をストアします。

*dp
a0