インテル® C++ コンパイラー XE 13.1 ユーザー・リファレンス・ガイド
このセクションでは、A と B の単精度浮動小数点値を比較する演算子について説明します。 Fvec クラスのオブジェクト同士を比較した場合は、比較されたオブジェクトと同じクラスで戻り値が返ってきます。
次の表は、Fvec クラスの比較演算子を示したものです。
比較した結果が真の場合、そのマスクは浮動小数点値ごとに 0xffffffff にセットされます。同様に、偽の場合は 0x00000000 にセットされます。 次の表は、比較演算子のクラスごとに戻り値を列挙したものです。「戻り値の表記法」の前半に述べた構文が使われます。
R |
A0 |
任意の演算子 |
B |
真の場合 |
偽の場合 |
F32vec4 |
F64vec2 |
F32vec1 |
---|---|---|---|---|---|---|---|---|
R0:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B1) |
0xffffffff |
0x0000000 |
X |
X |
X |
R1:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B2) |
0xffffffff |
0x0000000 |
X |
X |
N/A |
R2:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B3) |
0xffffffff |
0x0000000 |
X |
N/A |
N/A |
R3:= |
A3 |
cmp[eq | lt | le | gt | ge] |
B3) |
0xffffffff |
0x0000000 |
X |
N/A |
N/A |
次の表に、比較演算と組込み関数の例をいくつか示します。
戻り値 |
構文の使用例 |
組込み関数 |
---|---|---|
等しいかどうかの比較 | ||
4 float |
F32vec4 R = cmpeq(F32vec4 A); |
_mm_cmpeq_ps |
2 double |
F64vec2 R = cmpeq(F64vec2 A); |
_mm_cmpeq_pd |
1 float |
F32vec1 R = cmpeq(F32vec1 A); |
_mm_cmpeq_ss |
等しくないかどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmpneq(F32vec4 A); |
_mm_cmpneq_ps |
2 double |
F64vec2 R = cmpneq(F64vec2 A); |
_mm_cmpneq_pd |
1 float |
F32vec1 R = cmpneq(F32vec1 A); |
_mm_cmpneq_ss |
より小さいかどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmplt(F32vec4 A); |
_mm_cmplt_ps |
2 double |
F64vec2 R = cmplt(F64vec2 A); |
_mm_cmplt_pd |
1 float |
F32vec1 R = cmplt(F32vec1 A); |
_mm_cmplt_ss |
以下かどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmple(F32vec4 A); |
_mm_cmple_ps |
2 double |
F64vec2 R = cmple(F64vec2 A); |
_mm_cmple_pd |
1 float |
F32vec1 R = cmple(F32vec1 A); |
_mm_cmple_pd |
より大きいかどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmpgt(F32vec4 A); |
_mm_cmpgt_ps |
2 double |
F64vec2 R = cmpgt(F32vec42 A); |
_mm_cmpgt_pd |
1 float |
F32vec1 R = cmpgt(F32vec1 A); |
_mm_cmpgt_ss |
以上かどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmpge(F32vec4 A); |
_mm_cmpge_ps |
2 double |
F64vec2 R = cmpge(F64vec2 A); |
_mm_cmpge_pd |
1 float |
F32vec1 R = cmpge(F32vec1 A); |
_mm_cmpge_ss |
より小さくないかどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmpnlt(F32vec4 A); |
_mm_cmpnlt_ps |
2 double |
F64vec2 R = cmpnlt(F64vec2 A); |
_mm_cmpnlt_pd |
1 float |
F32vec1 R = cmpnlt(F32vec1 A); |
_mm_cmpnlt_ss |
以下でないかどうかの比較 | ||
---|---|---|
4 float |
F32vec4 R = cmpnle(F32vec4 A); |
_mm_cmpnle_ps |
2 double |
F64vec2 R = cmpnle(F64vec2 A); |
_mm_cmpnle_pd |
1 float |
F32vec1 R = cmpnle(F32vec1 A); |
_mm_cmpnle_ss |