インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ここでは、整数ストア操作用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数について説明します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
各組込み関数の詳細には、戻り値を説明した表が含まれています。p は、結果へのアクセスを示します。
組込み関数名 |
演算 |
対応するインテル® 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 |