インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

キャッシュ制御組込み関数

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

組込み関数名

演算

対応するインテル® SSE 命令

_mm_prefetch

ロード

PREFETCH

_mm_stream_pi

ストア

MOVNTQ

_mm_stream_ps

ストア

MOVNTPS

_mm256_stream_ps

ストア

VMOVNTPS

_mm_sfence

ストアフェンス

SFENCE

_mm_prefetch

void _mm_prefetch(char const*a, int sel);

1 キャッシュライン分のデータを、アドレス a からプロセッサーに近い位置にロードします。sel の値は、プリフェッチ操作のタイプを指定します。IA-32 アーキテクチャー・ベース・システムの場合、この値には、プリフェッチ命令のタイプに応じて、定数 _MM_HINT_T0_MM_HINT_T1_MM_HINT_T2_MM_HINT_NTA、または _MM_HINT_ET0 を指定してください。

_MM_HINT_ET0 は、組込み関数をインテル® SSE 命令に含まれない PREFETCHW 命令にマップします。_MM_HINT_ET0 を使用する前に、ターゲット CPU が PREFETCHW 命令をサポートしているかどうかを確認する必要があります。

_mm_stream_pi

void _mm_stream_pi(__m64 *p, __m64 a);

a のデータを、キャッシュを介さずに、アドレス p にストアします。この組込み関数を使用する前に、MMX レジスターのマルチメディア・ステートを空にする必要があります。詳細については、「EMMS 命令: 必要な理由」を参照してください。

_mm_stream_ps

void _mm_stream_ps(float *p, __m128 a);

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

_mm256_stream_ps

void _mm256_stream_ps(float *p, __m256 a);

a のデータを、キャッシュを介さずに、アドレス p にストアします。アドレスは、32 バイト (VEX.256 エンコード版) にアライメントが合っていなければなりません。

_mm_sfence

void _mm_sfence(void);

すべての先行するストアが、後に続くストアより前に、グローバルにアクセス可能になるのを保証します。

関連情報