インテル® 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

_mm_stream_si128

void _mm_stream_si128(__m128i *p, __m128i a);

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

*p

a

_mm_stream_si32

void _mm_stream_si32(int *p, int a);

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

*p

a

_mm_store_si128

void _mm_store_si128(__m128i *p, __m128i b);

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

*p

a

_mm_storeu_si128

void _mm_storeu_si128(__m128i *p, __m128i b);

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

*p

a

_mm_maskmoveu_si128

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

_mm_storel_epi64

void _mm_storel_epi64(__m128i *p, __m128i a);

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

*p[63:0]

a0