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

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

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

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

組み込み関数名 操作 対応する SSE2 命令
_mm_stream_si128 ストア MOVNTDQ
_mm_stream_si32 ストア MOVNTI
_mm_store_si128 ストア MOVDQA
_mm_storeu_si128 ストア MOVDQU
_mm_maskmoveu_si128 条件付きストア MASKMOVDQU
_mm_storel_epi64 最下位のストア MOVQ

 

void _mm_stream_si128(__m128i *p, __m128i a)

a のデータを、キャッシュを介さずに、アドレス p にストアします。アドレス p を含むキャッシュラインがすでにキャッシュ内にある場合、キャッシュは更新されます。アドレス p は、16 バイトにアライメントが合っていなければなりません。

*p
a

 

void _mm_stream_si32(int *p, int a)

a のデータを、キャッシュを介さずに、アドレス p にストアします。アドレス p を含むキャッシュラインがすでにキャッシュ内にある場合、キャッシュは更新されます。

*p
a

 

void _mm_store_si128(__m128i *p, __m128i b)

128 ビット値をストアします。アドレス p は、16 バイトにアライメントが合っていなければなりません。

*p
a

 

void _mm_storeu_si128(__m128i *p, __m128i b)

128 ビット値をストアします。アドレス p は、16 バイトにアライメントが合っていなくてもかまいません。

*p
a

 

void _mm_maskmoveu_si128(__m128i d, __m128i n, char *p)

d のバイト要素を、条件付きでアドレス p にストアします。セレクター n の各バイトの最上位ビットによって、それに対応する d の各バイトがストアされるかどうかが決まります。アドレス p は、16 バイトにアライメントが合っていなくてもかまいません。

if (n0[7]) if (n1[7] ... if (n15[7])
p[0] := d0 p[1] := d1 ... p[15] := d15

 

void _mm_storel_epi64(__m128i *p, __m128i a)

p で指定された値の下位 64 ビットをストアします。

*p[63:0]
a0