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

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

 

Is16vec4 simd_max(Is16vec4 A, Is16vec4 B);

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

対応する組込み関数:_mm_max_pi16

 

Is16vec4 simd_min(Is16vec4 A, Is16vec4 B);

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

対応する組込み関数:_mm_min_pi16

 

Iu8vec8 simd_max(Iu8vec8 A, Iu8vec8 B);

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

対応する組込み関数:_mm_max_pu8

 

Iu8vec8 simd_min(Iu8vec8 A, Iu8vec8 B);

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

対応する組込み関数:_mm_min_pu8

 

int move_mask(I8vec8 A);

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

対応する組込み関数:_mm_movemask_pi8 

 

void mask_move(I8vec8 A, I8vec8 B, signed char *p);

条件に従って、Aのバイト要素をいくつかアドレスpにストアします。選択子B に含まれている各バイトの上位ビットによって、A内の対応バイトがストアされるかされないかが決まります。

対応する組込み関数:_mm_maskmove_si64

 

void store_nta(__m64 *p, M64 A);

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

対応する組込み関数:_mm_stream_pi

 

Iu8vec8 simd_avg(Iu8vec8 A, Iu8vec8 B);

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

対応する組込み関数:_mm_avg_pu8

 

Iu16vec4 simd_avg(Iu16vec4 A, Iu16vec4 B);

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

対応する組込み関数:_mm_avg_pu16