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

インテル® ストリーミング SIMD 拡張命令用の整数組込み関数

次の機能を使用する場合は、ヘッダーファイル fvec.h をインクルードする必要があります。

AB に含まれているそれぞれの符号付き整数ワードの中で、要素単位で見たときの最大値を計算します。

Is16vec4 simd_max(Is16vec4 A, Is16vec4 B);
対応する組込み関数: _mm_max_pi16

AB に含まれているそれぞれの符号付き整数ワードの中で、要素単位で見たときの最小値を計算します。

Is16vec4 simd_min(Is16vec4 A, Is16vec4 B);
対応する組込み関数: _mm_min_pi16

AB に含まれているそれぞれの符号なしバイトの中で、要素単位で見たときの最大値を計算します。

Iu8vec8 simd_max(Iu8vec8 A, Iu8vec8 B);
対応する組込み関数: _mm_max_pu8

AB に含まれているそれぞれの符号なしバイトの中で、要素単位で見たときの最小値を計算します。

Iu8vec8 simd_min(Iu8vec8 A, Iu8vec8 B);
対応する組込み関数: _mm_min_pu8

A に含まれているすべてのバイトの最上位ビットから 8 ビット・マスクを 1 つ作成します。

int move_mask(I8vec8 A);
対応する組込み関数: _mm_movemask_pi8

条件に従って、A のバイト要素をいくつかアドレス p にストアします。セレクター B の各バイトの上位ビットによって、それに対応する A の各バイトがストアされるかどうかが決まります。

void mask_move(I8vec8 A, I8vec8 B, signed char *p);
対応する組込み関数: _mm_maskmove_si64

当該キャッシュデータに影響を与えることなく、A に含まれているデータをアドレス p にストアします。AIvec 型であれば何でもかまいません。

void store_nta(__m64 *p, M64 A);
対応する組込み関数: _mm_stream_pi

AB に含まれているそれぞれの符号なし 8 ビット整数すべてについて、要素単位で見たときの平均値を計算します。

Iu8vec8 simd_avg(Iu8vec8 A, Iu8vec8 B);
対応する組込み関数: _mm_avg_pu8

AB に含まれているそれぞれの符号なし 16 ビット整数すべてについて、要素単位で見たときの平均値を計算します。

Iu16vec4 simd_avg(Iu16vec4 A, Iu16vec4 B);
対応する組込み関数: _mm_avg_pu16