インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス
比較演算用のインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の組込み関数のプロトタイプは、ヘッダーファイル xmmintrin.h 内にあります。
これらの組込み関数を使用する場合、次のように immintrin.h ファイルをインクルードします。
#include <immintrin.h>
比較組込み関数は、a と b の比較を実行します。パックド形式では、a と b の 4 つの単精度浮動小数点値を比較して、128 ビット・マスクを返します。スカラー形式では、a と b の下位の単精度浮動小数点値を比較して、32 ビット・マスクを返します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。マスクは、各要素について、比較の結果が真の場合は 0xffffffff に設定し、偽の場合は 0x0 に設定されます。
各組込み関数演算の結果はレジスターに配置されます。ここでは、このレジスターを組込み関数ごとに R または R0 から R3 までを使用して示します。R0、R1、R2、および R3 はそれぞれ、結果レジスターの 4 つの 32 ビット部分を表します。
組込み関数名 |
演算 |
対応するインテル® SSE 命令 |
---|---|---|
_mm_cmpeq_ss |
等しい |
CMPEQSS |
_mm_cmpeq_ps |
等しい |
CMPEQPS |
_mm_cmplt_ss |
より小さい |
CMPLTSS |
_mm_cmplt_ps |
より小さい |
CMPLTPS |
_mm_cmple_ss |
以下 |
CMPLESS |
_mm_cmple_ps |
以下 |
CMPLEPS |
_mm_cmpgt_ss |
より大きい |
CMPLTSS |
_mm_cmpgt_ps |
より大きい |
CMPLTPS |
_mm_cmpge_ss |
以上 |
CMPLESS |
_mm_cmpge_ps |
以上 |
CMPLEPS |
_mm_cmpneq_ss |
等しくない |
CMPNEQSS |
_mm_cmpneq_ps |
等しくない |
CMPNEQPS |
_mm_cmpnlt_ss |
より小さくない |
CMPNLTSS |
_mm_cmpnlt_ps |
より小さくない |
CMPNLTPS |
_mm_cmpnle_ss |
以下でない |
CMPNLESS |
_mm_cmpnle_ps |
以下でない |
CMPNLEPS |
_mm_cmpngt_ss |
より大きくない |
CMPNLTSS |
_mm_cmpngt_ps |
より大きくない |
CMPNLTPS |
_mm_cmpnge_ss |
以上でない |
CMPNLESS |
_mm_cmpnge_ps |
以上でない |
CMPNLEPS |
_mm_cmpord_ss |
順序付けされている |
CMPORDSS |
_mm_cmpord_ps |
順序付けされている |
CMPORDPS |
_mm_cmpunord_ss |
順序付けされていない |
CMPUNORDSS |
_mm_cmpunord_ps |
順序付けされていない |
CMPUNORDPS |
_mm_comieq_ss |
等しい |
COMISS |
_mm_comilt_ss |
より小さい |
COMISS |
_mm_comile_ss |
以下 |
COMISS |
_mm_comigt_ss |
より大きい |
COMISS |
_mm_comige_ss |
以上 |
COMISS |
_mm_comineq_ss |
等しくない |
COMISS |
_mm_ucomieq_ss |
等しい |
UCOMISS |
_mm_ucomilt_ss |
より小さい |
UCOMISS |
_mm_ucomile_ss |
以下 |
UCOMISS |
_mm_ucomigt_ss |
より大きい |
UCOMISS |
_mm_ucomige_ss |
以上 |
UCOMISS |
_mm_ucomineq_ss |
等しくない |
UCOMISS |
__m128 __cdecl _mm_cmpeq_ss(__m128 a, __m128 b);
等しいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpeq_ps(__m128 a, __m128 b);
等しいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 |
(a1 == b1) ? 0xffffffff : 0x0 |
(a2 == b2) ? 0xffffffff : 0x0 |
(a3 == b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmplt_ss(__m128 a, __m128 b);
より小さいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 < b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmplt_ps(__m128 a, __m128 b);
より小さいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 < b0) ? 0xffffffff : 0x0 |
(a1 < b1) ? 0xffffffff : 0x0 |
(a2 < b2) ? 0xffffffff : 0x0 |
(a3 < b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmple_ss(__m128 a, __m128 b);
以下かどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 <= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmple_ps(__m128 a, __m128 b);
以下かどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 <= b0) ? 0xffffffff : 0x0 |
(a1 <= b1) ? 0xffffffff : 0x0 |
(a2 <= b2) ? 0xffffffff : 0x0 |
(a3 <= b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpgt_ss(__m128 a, __m128 b);
より大きいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpgt_ps(__m128 a, __m128 b);
より大きいかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 |
(a1 > b1) ? 0xffffffff : 0x0 |
(a2 > b2) ? 0xffffffff : 0x0 |
(a3 > b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpge_ss(__m128 a, __m128 b);
以上かどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 >= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpge_ps(__m128 a, __m128 b);
以上かどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 >= b0) ? 0xffffffff : 0x0 |
(a1 >= b1) ? 0xffffffff : 0x0 |
(a2 >= b2) ? 0xffffffff : 0x0 |
(a3 >= b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpneq_ss(__m128 a, __m128 b);
等しくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 != b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpneq_ps(__m128 a, __m128 b);
等しくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 != b0) ? 0xffffffff : 0x0 |
(a1 != b1) ? 0xffffffff : 0x0 |
(a2 != b2) ? 0xffffffff : 0x0 |
(a3 != b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpnlt_ss(__m128 a, __m128 b);
より小さくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 < b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpnlt_ps(__m128 a, __m128 b);
より小さくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 < b0) ? 0xffffffff : 0x0 |
!(a1 < b1) ? 0xffffffff : 0x0 |
!(a2 < b2) ? 0xffffffff : 0x0 |
!(a3 < b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpnle_ss(__m128 a, __m128 b);
以下でないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 <= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpnle_ps(__m128 a, __m128 b);
以下でないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 <= b0) ? 0xffffffff : 0x0 |
!(a1 <= b1) ? 0xffffffff : 0x0 |
!(a2 <= b2) ? 0xffffffff : 0x0 |
!(a3 <= b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpngt_ss(__m128 a, __m128 b);
より大きくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 > b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpngt_ps(__m128 a, __m128 b);
より大きくないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 > b0) ? 0xffffffff : 0x0 |
!(a1 > b1) ? 0xffffffff : 0x0 |
!(a2 > b2) ? 0xffffffff : 0x0 |
!(a3 > b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpnge_ss(__m128 a, __m128 b);
以上でないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 >= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpnge_ps(__m128 a, __m128 b);
以上でないかどうか比較します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 >= b0) ? 0xffffffff : 0x0 |
!(a1 >= b1) ? 0xffffffff : 0x0 |
!(a2 >= b2) ? 0xffffffff : 0x0 |
!(a3 >= b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpord_ss(__m128 a, __m128 b);
順序付けされているかどうか判定します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 ord? b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpord_ps(__m128 a, __m128 b);
順序付けされているかどうか判定します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 ord? b0) ? 0xffffffff : 0x0 |
(a1 ord? b1) ? 0xffffffff : 0x0 |
(a2 ord? b2) ? 0xffffffff : 0x0 |
(a3 ord? b3) ? 0xffffffff : 0x0 |
__m128 _mm_cmpunord_ss(__m128 a, __m128 b);
順序付けされていないかどうか判定します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 unord? b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
__m128 _mm_cmpunord_ps(__m128 a, __m128 b);
順序付けされていないかどうか判定します。
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 unord? b0) ? 0xffffffff : 0x0 |
(a1 unord? b1) ? 0xffffffff : 0x0 |
(a2 unord? b2) ? 0xffffffff : 0x0 |
(a3 unord? b3) ? 0xffffffff : 0x0 |
int _mm_comieq_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a と b が等しいかどうか比較します。a と b が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_comilt_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b より小さいかどうか比較します。a が b より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_comile_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b 以下かどうか比較します。a が b 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_comigt_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b より大きいかどうか比較します。a が b より大きい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_comige_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b 以上かどうか比較します。a が b 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_comineq_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a と b が等しくないかどうか比較します。a と b が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 != b0) ? 0x1 : 0x0 |
int _mm_ucomieq_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a と b が等しいかどうか比較します。a と b が等しい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_ucomilt_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b より小さいかどうか比較します。a が b より小さい場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_ucomile_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b 以下かどうか比較します。a が b 以下の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_ucomigt_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b より大きいかどうか比較します。a が b 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_ucomige_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a が b 以上かどうか比較します。a が b 以上の場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_ucomineq_ss(__m128 a, __m128 b);
a と b の下位の単精度浮動小数点値について、a と b が等しくないかどうか比較します。a と b が等しくない場合は、1 を返します。それ以外の場合は、'0' を返します。
R |
---|
r := (a0 != b0) ? 0x1 : 0x0 |