インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
条件付き選択演算子の場合は、第 3 および第 4 オペランドによって戻り値のデータ型が決まります。第 3 および第 4 オペランドのサイズが同じで符号が異なる場合、戻り値は共通の親データ型のうち最も近いデータ型になります。
条件付き選択演算子の構文の使用方法
第 3 および第 4 オペランドのサイズが同じで符号が異なる場合、戻り値は共通の親データ型のうち最も近いデータ型になります。
I16vec4 R = select_neq(Is16vec4, Is16vec4, Is16vec4, Iu16vec4);
「等しい」条件付き選択
R0 := (A0 == B0) ? C0 : D0;
R1 := (A1 == B1) ? C1 : D1;
R2 := (A2 == B2) ? C2 : D2;
R3 := (A3 == B3) ? C3 : D3;
「等しくない」条件付き選択
R0 := (A0 != B0) ? C0 : D0;
R1 := (A1 != B1) ? C1 : D1;
R2 := (A2 != B2) ? C2 : D2;
R3 := (A3 != B3) ? C3 : D3;
条件付き選択演算子と対応する組込み関数
条件付き選択の条件 |
演算 |
構文 |
対応する組込み関数 |
その他の組込み関数 (すべてに適用) |
---|---|---|---|---|
等しい |
select_eq |
R = select_eq(A, B, C, D) |
_mm_cmpeq_pi32 |
_mm_and_si64
|
等しくない |
select_neq |
R = select_neq(A, B, C, D) |
_mm_cmpeq_pi32 |
|
より大きい |
select_gt |
R = select_gt(A, B, C, D) |
_mm_cmpgt_pi32 |
|
以上 |
select_ge |
R = select_gt(A, B, C, D) |
_mm_cmpge_pi32 |
|
より小さい |
select_lt |
R = select_lt(A, B, C, D) |
_mm_cmplt_pi32 |
|
以下 |
select_le |
R = select_le(A, B, C, D) |
_mm_cmple_pi32 |
条件付き選択演算のオペランドはすべて同じサイズでなければなりません。戻り値のデータ型は、オペランド C および D に共通する親データ型の中でも最も近いデータ型になります。「>」および「<」という比較を用いて条件付き選択演算を行う場合は、第 1 および第 2 オペランドの符号は次の表に従わなければなりません。
条件付き選択演算子の多重定義
R |
比較条件 |
A、B |
C |
D |
---|---|---|---|---|
I32vec2 R |
select_eq |
I[s|u]32vec2 |
I[s|u]32vec2 |
I[s|u]32vec2 |
I16vec4 R |
|
I[s|u]16vec4 |
I[s|u]16vec4 |
|
I8vec8 R |
|
I[s|u]8vec8 |
I[s|u]8vec8 |
|
I32vec2 R |
select_gt |
Is32vec2 |
Is32vec2 |
Is32vec2 |
I16vec4 R |
|
Is16vec4 |
Is16vec4 |
|
I8vec8 R |
|
Is8vec8 |
Is8vec8 |
次の表は、任意の要素数に対する R0 から R7 までの戻り値の対応表です。戻り値が 4 つ未満のときも、これと同じ戻り値の対応表を適用します。
条件付き選択演算子の戻り値の対応表
戻り値 |
オペランド A |
使用できる演算子 | オペランド B |
オペランド C、D |
|||||
---|---|---|---|---|---|---|---|---|---|
R0:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C0 : D0; |
R1:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C1 : D1; |
R2:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C2 : D2; |
R3:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C3 : D3; |
R4:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C4 : D4; |
R5:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C5 : D5; |
R6:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C6 : D6; |
R7:= |
A0 |
== |
!= |
> |
>= |
< |
<= |
B0 |
C7 : D7; |