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

比較組込み関数

次の表に、浮動小数点比較演算用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数のリストを示します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。

比較組込み関数は、ab の比較を実行します。パックド形式では、ab の 2 つの倍精度浮動小数点値を比較して、128 ビット・マスクを返します。スカラー形式の場合は、ab の下位の倍精度浮動小数点値を比較して、64 ビット・マスクを返します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

マスクは、各要素について、比較の結果が真の場合は 0xffffffffffffffff に設定し、偽の場合は 0x0 に設定します。命令名の後の r は、SIMD 命令の実行時にオペランドが逆順にされることを示します。

各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。各組込み関数の結果レジスターは RR0、および R1 で示します。RR0、および R1 はそれぞれ、結果レジスターの 1 つの部分を表します。

組込み関数名

演算

対応するインテル® SSE2 命令

_mm_cmpeq_pd

等しい

CMPEQPD

_mm_cmplt_pd

より小さい

CMPLTPD

_mm_cmple_pd

以下

CMPLEPD

_mm_cmpgt_pd

より大きい

CMPLTPDr

_mm_cmpge_pd

以上

CMPLEPDr

_mm_cmpord_pd

順序付けされている

CMPORDPD

_mm_cmpunord_pd

順序付けされていない

CMPUNORDPD

_mm_cmpneq_pd

等しくない

CMPNEQPD

_mm_cmpnlt_pd

より小さくない

CMPNLTPD

_mm_cmpnle_pd

以下でない

CMPNLEPD

_mm_cmpngt_pd

より大きくない

CMPNLTPDr

_mm_cmpnge_pd

以上でない

CMPNLEPDr

_mm_cmpeq_sd

等しい

CMPEQSD

_mm_cmplt_sd

より小さい

CMPLTSD

_mm_cmple_sd

以下

CMPLESD

_mm_cmpgt_sd

より大きい

CMPLTSDr

_mm_cmpge_sd

以上

CMPLESDr

_mm_cmpord_sd

順序付けされている

CMPORDSD

_mm_cmpunord_sd

順序付けされていない

CMPUNORDSD

_mm_cmpneq_sd

等しくない

CMPNEQSD

_mm_cmpnlt_sd

より小さくない

CMPNLTSD

_mm_cmpnle_sd

以下でない

CMPNLESD

_mm_cmpngt_sd

より大きくない

CMPNLTSDr

_mm_cmpnge_sd

以上でない

CMPNLESDr

_mm_comieq_sd

等しい

COMISD

_mm_comilt_sd

より小さい

COMISD

_mm_comile_sd

以下

COMISD

_mm_comigt_sd

より大きい

COMISD

_mm_comige_sd

以上

COMISD

_mm_comineq_sd

等しくない

COMISD

_mm_ucomieq_sd

等しい

UCOMISD

_mm_ucomilt_sd

より小さい

UCOMISD

_mm_ucomile_sd

以下

UCOMISD

_mm_ucomigt_sd

より大きい

UCOMISD

_mm_ucomige_sd

以上

UCOMISD

_mm_ucomineq_sd

等しくない

UCOMISD

_mm_cmpeq_pd

__m128d _mm_cmpeq_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値が等しいかどうか比較します。

R0

R1

(a0 == b0) ? 0xffffffffffffffff : 0x0

(a1 == b1) ? 0xffffffffffffffff : 0x0

_mm_cmplt_pd

__m128d _mm_cmplt_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab より小さいかどうか比較します。

R0

R1

(a0 < b0) ? 0xffffffffffffffff : 0x0

(a1 < b1) ? 0xffffffffffffffff : 0x0

_mm_cmple_pd

__m128d _mm_cmple_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab 以下かどうか比較します。

R0

R1

(a0 <= b0) ? 0xffffffffffffffff : 0x0

(a1 <= b1) ? 0xffffffffffffffff : 0x0

_mm_cmpgt_pd

__m128d _mm_cmpgt_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab より大きいかどうか比較します。

R0

R1

(a0 > b0) ? 0xffffffffffffffff : 0x0

(a1 > b1) ? 0xffffffffffffffff : 0x0

_mm_cmpge_pd

__m128d _mm_cmpge_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab 以上かどうか比較します。

R0

R1

(a0 >= b0) ? 0xffffffffffffffff : 0x0

(a1 >= b1) ? 0xffffffffffffffff : 0x0

_mm_cmpord_pd

__m128d _mm_cmpord_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値が順序付けされているかどうか判定します。

R0

R1

(a0 ord b0) ? 0xffffffffffffffff : 0x0

(a1 ord b1) ? 0xffffffffffffffff : 0x0

_mm_cmpunord_pd

__m128d _mm_cmpunord_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値が順序付けされていないかどうか判定します。

R0

R1

(a0 unord b0) ? 0xffffffffffffffff : 0x0

(a1 unord b1) ? 0xffffffffffffffff : 0x0

_mm_cmpneq_pd

__m128d _mm_cmpneq_pd( __m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値が等しいかどうか比較します。

R0

R1

(a0 != b0) ? 0xffffffffffffffff : 0x0

(a1 != b1) ? 0xffffffffffffffff : 0x0

_mm_cmpnlt_pd

__m128d _mm_cmpnlt_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab より小さくないかどうか比較します。

R0

R1

!(a0 < b0) ? 0xffffffffffffffff : 0x0

!(a1 < b1) ? 0xffffffffffffffff : 0x0

_mm_cmpnle_pd

__m128d _mm_cmpnle_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab 以下でないかどうか比較します。

R0

R1

!(a0 <= b0) ? 0xffffffffffffffff : 0x0

!(a1 <= b1) ? 0xffffffffffffffff : 0x0

_mm_cmpngt_pd

__m128d _mm_cmpngt_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab より大きくないかどうか比較します。

b

R0

R1

!(a0 > b0) ? 0xffffffffffffffff : 0x0

!(a1 > b1) ? 0xffffffffffffffff : 0x0

_mm_cmpnge_pd

__m128d _mm_cmpnge_pd(__m128d a, __m128d b);

ab の 2 つの倍精度浮動小数点値について、ab 以上でないかどうか比較します。

R0

R1

!(a0 >= b0) ? 0xffffffffffffffff : 0x0

!(a1 >= b1) ? 0xffffffffffffffff : 0x0

_mm_cmpeq_sd

__m128d _mm_cmpeq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値が等しいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 == b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmplt_sd

__m128d _mm_cmplt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より小さいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 < b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmple_sd

__m128d _mm_cmple_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以下かどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 <= b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpgt_sd

__m128d _mm_cmpgt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より大きいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 > b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpge_sd

__m128d _mm_cmpge_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以上かどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 >= b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpord_sd

__m128d _mm_cmpord_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値が順序付けされているかどうか判定します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 ord b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpunord_sd

__m128d _mm_cmpunord_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値が順序付けされていないかどうか判定します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 unord b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpneq_sd

__m128d _mm_cmpneq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値が等しくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

(a0 != b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpnlt_sd

__m128d _mm_cmpnlt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より小さくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

!(a0 < b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpnle_sd

__m128d _mm_cmpnle_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以下でないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

!(a0 <= b0) ? 0xffffffffffffffff : 0x0&#9;

a1

_mm_cmpngt_sd

__m128d _mm_cmpngt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より大きくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

!(a0 > b0) ? 0xffffffffffffffff : 0x0

a1

_mm_cmpnge_sd

__m128d _mm_cmpnge_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以上でないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。

R0

R1

!(a0 >= b0) ? 0xffffffffffffffff : 0x0

a1

_mm_comieq_sd

int _mm_comieq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab が等しいかどうか比較します。ab が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 == b0) ? 0x1 : 0x0

_mm_comilt_sd

int _mm_comilt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より小さいかどうか比較します。ab より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 < b0) ? 0x1 : 0x0

_mm_comile_sd

int _mm_comile_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、a が b 以下かどうか比較します。ab 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 <= b0) ? 0x1 : 0x0

_mm_comigt_sd

int _mm_comigt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より大きいかどうか比較します。ab より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 > b0) ? 0x1 : 0x0

_mm_comige_sd

int _mm_comige_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以上かどうか比較します。ab 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 >= b0) ? 0x1 : 0x0

_mm_comineq_sd

int _mm_comineq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab が等しくないかどうか比較します。ab が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 != b0) ? 0x1 : 0x0

_mm_ucomieq_sd

int _mm_ucomieq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab が等しいかどうか比較します。ab が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 == b0) ? 0x1 : 0x0

_mm_ucomilt_sd

int _mm_ucomilt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab より小さいかどうか比較します。ab より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 < b0) ? 0x1 : 0x0

_mm_ucomile_sd

int _mm_ucomile_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、a が b 以下かどうか比較します。ab 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 <= b0) ? 0x1 : 0x0

_mm_ucomigt_sd

int _mm_ucomigt_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、a が b より大きいかどうか比較します。ab より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 > b0) ? 0x1 : 0x0

_mm_ucomige_sd

int _mm_ucomige_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab 以上かどうか比較します。ab 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 >= b0) ? 0x1 : 0x0

_mm_ucomineq_sd

int _mm_ucomineq_sd(__m128d a, __m128d b);

ab の下位の倍精度浮動小数点値について、ab が等しくないかどうか比較します。ab が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。

R

(a0 != b0) ? 0x1 : 0x0