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