ストリーミング SIMD 拡張命令 2 (SSE2) の組み込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
組み込み関数名 | 操作 | 対応する SSE2 命令 |
---|---|---|
_mm_stream_pd | ストア | MOVNTPD |
_mm_stream_si128 | ストア | MOVNTDQ |
_mm_stream_si32 | ストア | MOVNTI |
_mm_clflush | フラッシュ | CLFLUSH |
_mm_lfence | メモリーアクセスの保証 | LFENCE |
_mm_mfence | メモリーアクセスの保証 | MFENCE |
void _mm_stream_pd(double *p, __m128d a)
a のデータを、キャッシュを介さずに、アドレス p にストアします。アドレス p は、16 バイトにアライメントが合っていなければなりません。アドレス p を含むキャッシュラインがすでにキャッシュ内にある場合、キャッシュは更新されます。
p[0] := a0
p[1] := a1
p[0] | p[1] |
---|---|
a0 | a1 |
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_clflush(void const*p)
コヒーレンシー・ドメイン内のすべてのキャッシュから、p を含むキャッシュラインをフラッシュし、無効化します。
void _mm_lfence(void)
プログラムの順序でロードフェンス命令に先行するすべてのロード命令が、フェンスに続くロード命令より前に、グローバルにアクセス可能になるのを保証します。
void _mm_mfence(void)
プログラムの順序でメモリーフェンス命令に先行するすべてのメモリーアクセス命令が、フェンスに続くメモリーアクセス命令より前に、グローバルにアクセス可能になるのを保証します。