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

乗算演算子

乗算演算子では、I[s|u]16vec4 または I[s|u]16vec8 のいずれかのクラスのデータ型しか演算に使用できません。また、戻り値もそのいずれかのデータ型になります。次に例を示します。

乗算演算子の構文の使用例

明示的に B を Is16vec4 に変換します。

Is16vec4 A,C;

Iu32vec2 B;

C = A * C;

C = A * (Is16vec4)B;

共通の親データ型のうち最も近いデータ型 (I16vec4) を返します。

Is16vec4 A;

Iu16vec4 B;

I16vec4 C;

C = A + B;

mul_high 関数と mul_add 関数では、Is16vec4 データのみ使用できます。

Is16vec4 A,B,C,D;

C = mul_high(A,B);

D = mul_add(A,B);

対応する組込み関数と乗算演算子

記号

構文の使用方法

組込み関数

*

*=

R = A * B
R *= A

_mm_mullo_pi16
_mm_mullo_epi16

mul_high

N/A

R = mul_high(A, B)

_mm_mulhi_pi16
_mm_mulhi_epi16

mul_add

N/A

R = mul_high(A, B)

_mm_madd_pi16
_mm_madd_epi16

次の表に示すように、この乗算演算子の戻り値は常に、共通する親データ型のうち最も近いデータ型になります。2 つのオペランドのサイズは 16 ビットでなければなりません。それ以外の場合は、型キャストを明示的に使用する必要があります。

乗算演算子の多重定義

R

Mul

A

B

I16vec4 R

*

I[s|u]16vec4 A

I[s|u]16vec4 B

I16vec8 R

*

I[s|u]16vec8 A

I[s|u]16vec8 B

Is16vec4 R

mul_add

Is16vec4 A

Is16vec4 B

Is16vec8

mul_add

Is16vec8 A

Is16vec8 B

Is32vec2 R

mul_high

Is16vec4 A

Is16vec4 B

Is32vec4 R

mul_high

s16vec8 A

Is16vec8 B

次の表は、代入付き乗算演算子を用いた場合の戻り値のデータ型を列挙したものです。オペランドのサイズはすべて 16 ビットでなければなりません。オペランドのサイズが正しくない場合は、明示的な型キャストを使用する必要があります。

代入付き乗算

戻り値 (R)

左辺 (R)

Mul

右辺 (A)

I[x]16vec8

I[x]16vec8

*=

I[s|u]16vec8 A;

I[x]16vec4

I[x]16vec4

*=

I[s|u]16vec4 A;