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

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

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

ストリーミング SIMD 拡張命令 (SSE) の組み込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。

組み込み関数名 操作 対応する SSE 命令
_mm_storeh_pi 上位の値のストア MOVHPS mem, reg
_mm_storel_pi 下位の値のストア MOVLPS mem, reg
_mm_store_ss 最下位の値をストアする MOVSS
_mm_store1_ps 最下位の値を 4 ワードすべてにストアする Shuffling + MOVSS
_mm_store_ps 4 つの値をストアする (アドレスのアライメントが合っていなければなりません) MOVAPS
_mm_storeu_ps 4 つの値をストアする (アドレスのアライメントが合っている必要はありません) MOVUPS
_mm_storer_ps 4 つの値を逆順でストアする MOVAPS + Shuffling

 

void _mm_storeh_pi(__m64 *p, __m128 a)

a の上位 2 つの単精度浮動小数点値を、アドレス p にストアします。

*p0 *p1
a2 a3

 

void _mm_storel_pi(__m64 *p, __m128 a)

a の下位 2 つの単精度浮動小数点値を、アドレス p にストアします。

*p0 *p1
a0 a1

 

void _mm_store_ss(float * p, __m128 a)

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

*p
a0

 

void _mm_store1_ps(float * p, __m128 a )

最下位の単精度浮動小数点値を 4 ワードにストアします。

p[0] p[1] p[2] p[3]
a0 a0 a0 a0

 

void _mm_store_ps(float *p, __m128 a)

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

p[0] p[1] p[2] p[3]
a0 a1 a2 a3

 

void _mm_storeu_ps(float *p, __m128 a)

4 つの単精度浮動小数点値をストアします。アドレスは 16 バイトにアライメントが合っている必要はありません。

p[0] p[1] p[2] p[3]
a0 a1 a2 a3

 

void _mm_storer_ps(float * p, __m128 a )

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

p[0] p[1] p[2] p[3]
a3 a2 a1 a0