インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
次の表に、浮動小数点比較演算用のインテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2) の組込み関数のリストを示します。インテル® SSE2 の組込み関数のプロトタイプは、ヘッダーファイル emmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
比較組込み関数は、a と b の比較を実行します。パックド形式では、a と b の 2 つの倍精度浮動小数点値を比較して、128 ビット・マスクを返します。スカラー形式の場合は、a と b の下位の倍精度浮動小数点値を比較して、64 ビット・マスクを返します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
マスクは、各要素について、比較の結果が真の場合は 0xffffffffffffffff に設定し、偽の場合は 0x0 に設定します。命令名の後の r は、SIMD 命令の実行時にオペランドが逆順にされることを示します。
各組込み関数演算の結果はレジスターに配置されます。各レジスターに配置される値については、次の表の関数名の詳細で示します。各組込み関数の結果レジスターは R、R0、および R1 で示します。R、R0、および 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 |
__m128d _mm_cmpeq_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値が等しいかどうか比較します。
R0 |
R1 |
---|---|
(a0 == b0) ? 0xffffffffffffffff : 0x0 |
(a1 == b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmplt_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b より小さいかどうか比較します。
R0 |
R1 |
---|---|
(a0 < b0) ? 0xffffffffffffffff : 0x0 |
(a1 < b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmple_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b 以下かどうか比較します。
R0 |
R1 |
---|---|
(a0 <= b0) ? 0xffffffffffffffff : 0x0 |
(a1 <= b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpgt_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b より大きいかどうか比較します。
R0 |
R1 |
---|---|
(a0 > b0) ? 0xffffffffffffffff : 0x0 |
(a1 > b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpge_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b 以上かどうか比較します。
R0 |
R1 |
---|---|
(a0 >= b0) ? 0xffffffffffffffff : 0x0 |
(a1 >= b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpord_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値が順序付けされているかどうか判定します。
R0 |
R1 |
---|---|
(a0 ord b0) ? 0xffffffffffffffff : 0x0 |
(a1 ord b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpunord_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値が順序付けされていないかどうか判定します。
R0 |
R1 |
---|---|
(a0 unord b0) ? 0xffffffffffffffff : 0x0 |
(a1 unord b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpneq_pd( __m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値が等しいかどうか比較します。
R0 |
R1 |
---|---|
(a0 != b0) ? 0xffffffffffffffff : 0x0 |
(a1 != b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpnlt_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b より小さくないかどうか比較します。
R0 |
R1 |
---|---|
!(a0 < b0) ? 0xffffffffffffffff : 0x0 |
!(a1 < b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpnle_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b 以下でないかどうか比較します。
R0 |
R1 |
---|---|
!(a0 <= b0) ? 0xffffffffffffffff : 0x0 |
!(a1 <= b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpngt_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b より大きくないかどうか比較します。
b R0 |
R1 |
---|---|
!(a0 > b0) ? 0xffffffffffffffff : 0x0 |
!(a1 > b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpnge_pd(__m128d a, __m128d b);
a と b の 2 つの倍精度浮動小数点値について、a が b 以上でないかどうか比較します。
R0 |
R1 |
---|---|
!(a0 >= b0) ? 0xffffffffffffffff : 0x0 |
!(a1 >= b1) ? 0xffffffffffffffff : 0x0 |
__m128d _mm_cmpeq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値が等しいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 == b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmplt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より小さいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 < b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmple_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以下かどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 <= b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpgt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より大きいかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 > b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpge_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以上かどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 >= b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpord_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値が順序付けされているかどうか判定します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 ord b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpunord_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値が順序付けされていないかどうか判定します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 unord b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpneq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値が等しくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
(a0 != b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpnlt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より小さくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
!(a0 < b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpnle_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以下でないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
!(a0 <= b0) ? 0xffffffffffffffff : 0x0	 |
a1 |
__m128d _mm_cmpngt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より大きくないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
!(a0 > b0) ? 0xffffffffffffffff : 0x0 |
a1 |
__m128d _mm_cmpnge_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以上でないかどうか比較します。上位の倍精度浮動小数点値は、a からそのまま渡されます。
R0 |
R1 |
---|---|
!(a0 >= b0) ? 0xffffffffffffffff : 0x0 |
a1 |
int _mm_comieq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a と b が等しいかどうか比較します。a と b が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_comilt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より小さいかどうか比較します。a が b より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_comile_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以下かどうか比較します。a が b 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_comigt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より大きいかどうか比較します。a が b より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_comige_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以上かどうか比較します。a が b 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_comineq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a と b が等しくないかどうか比較します。a と b が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 != b0) ? 0x1 : 0x0 |
int _mm_ucomieq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a と b が等しいかどうか比較します。a と b が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_ucomilt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より小さいかどうか比較します。a が b より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_ucomile_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以下かどうか比較します。a が b 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_ucomigt_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b より大きいかどうか比較します。a が b より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_ucomige_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a が b 以上かどうか比較します。a が b 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_ucomineq_sd(__m128d a, __m128d b);
a と b の下位の倍精度浮動小数点値について、a と b が等しくないかどうか比較します。a と b が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 != b0) ? 0x1 : 0x0 |