比較組込み関数は、a と b の比較を実行します。パックド形式では、a と b の 4 つの単精度浮動小数点値を比較して、128 ビットマスクを返します。スカラ形式では、a と b の最下位の単精度浮動小数点値を比較して、32 ビットマスクを返します。上位 3 つの単精度浮動小数点値は、a からそのまま渡されます。マスクは、各要素について、比較の結果が真の場合は 0xffffffff に設定し、偽の場合は 0x0 に設定されます。
ストリーミング SIMD 拡張命令の組込み関数のプロトタイプは、ヘッダファイル xmmintrin.h 内にあります。
組込み関数 の名前 |
比較条件 | 対応する 命令 |
---|---|---|
_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_ps | より小さい | 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 _mm_cmpeq_ss(__m128 a, __m128 b)
等しいかどうか比較します。
r0 := (a0 == b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpeq_ps(__m128 a, __m128 b)
等しいかどうか比較します。
r0 := (a0 == b0) ? 0xffffffff : 0x0
r1 := (a1 == b1) ? 0xffffffff : 0x0
r2 := (a2 == b2) ? 0xffffffff : 0x0
r3 := (a3 == b3) ? 0xffffffff : 0x0
__m128 _mm_cmplt_ss(__m128 a, __m128 b)
より小さいどうか比較します。
r0 := (a0 < b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmplt_ps(__m128 a, __m128 b)
より小さいどうか比較します。
r0 := (a0 < b0) ? 0xffffffff : 0x0
r1 := (a1 < b1) ? 0xffffffff : 0x0
r2 := (a2 < b2) ? 0xffffffff : 0x0
r3 := (a3 < b3) ? 0xffffffff : 0x0
__m128 _mm_cmple_ss(__m128 a, __m128 b)
以下かどうか比較します。
r0 := (a0 <= b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmple_ps(__m128 a, __m128 b)
以下かどうか比較します。
r0 := (a0 <= b0) ? 0xffffffff : 0x0
r1 := (a1 <= b1) ? 0xffffffff : 0x0
r2 := (a2 <= b2) ? 0xffffffff : 0x0
r3 := (a3 <= b3) ? 0xffffffff : 0x0
__m128 _mm_cmpgt_ss(__m128 a, __m128 b)
より大きいかどうか比較します。
r0 := (a0 > b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpgt_ps(__m128 a, __m128 b)
より大きいかどうか比較します。
r0 := (a0 > b0) ? 0xffffffff : 0x0
r1 := (a1 > b1) ? 0xffffffff : 0x0
r2 := (a2 > b2) ? 0xffffffff : 0x0
r3 := (a3 > b3) ? 0xffffffff : 0x0
__m128 _mm_cmpge_ss(__m128 a, __m128 b)
以上かどうか比較します。
r0 := (a0 >= b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpge_ps(__m128 a, __m128 b)
以上かどうか比較します。
r0 := (a0 >= b0) ? 0xffffffff : 0x0
r1 := (a1 >= b1) ? 0xffffffff : 0x0
r2 := (a2 >= b2) ? 0xffffffff : 0x0
r3 := (a3 >= b3) ? 0xffffffff : 0x0
__m128 _mm_cmpneq_ss(__m128 a, __m128 b)
等しくないかどうか比較します。
r0 := (a0 != b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpneq_ps(__m128 a, __m128 b)
等しくないかどうか比較します。
r0 := (a0 != b0) ? 0xffffffff : 0x0
r1 := (a1 != b1) ? 0xffffffff : 0x0
r2 := (a2 != b2) ? 0xffffffff : 0x0
r3 := (a3 != b3) ? 0xffffffff : 0x0
__m128 _mm_cmpnlt_ss(__m128 a, __m128 b)
より小さくないかどうか比較します。
r0 := !(a0 < b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpnlt_ps(__m128 a, __m128 b)
より小さくないかどうか比較します。
r0 := !(a0 < b0) ? 0xffffffff : 0x0
r1 := !(a1 < b1) ? 0xffffffff : 0x0
r2 := !(a2 < b2) ? 0xffffffff : 0x0
r3 := !(a3 < b3) ? 0xffffffff : 0x0
__m128 _mm_cmpnle_ss(__m128 a, __m128 b)
以下でないかどうか比較します。
r0 := !(a0 <= b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpnle_ps(__m128 a, __m128 b)
以下でないかどうか比較します。
r0 := !(a0 <= b0) ? 0xffffffff : 0x0
r1 := !(a1 <= b1) ? 0xffffffff : 0x0
r2 := !(a2 <= b2) ? 0xffffffff : 0x0
r3 := !(a3 <= b3) ? 0xffffffff : 0x0
__m128 _mm_cmpngt_ss(__m128 a, __m128 b)
より大きくないかどうか比較します。
r0 := !(a0 > b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpngt_ps(__m128 a, __m128 b)
より大きくないかどうか比較します。
r0 := !(a0 > b0) ? 0xffffffff : 0x0
r1 := !(a1 > b1) ? 0xffffffff : 0x0
r2 := !(a2 > b2) ? 0xffffffff : 0x0
r3 := !(a3 > b3) ? 0xffffffff : 0x0
__m128 _mm_cmpnge_ss(__m128 a, __m128 b)
以上でないかどうか比較します。
r0 := !(a0 >= b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpnge_ps(__m128 a, __m128 b)
以上でないかどうか比較します。
r0 := !(a0 >= b0) ? 0xffffffff : 0x0
r1 := !(a1 >= b1) ? 0xffffffff : 0x0
r2 := !(a2 >= b2) ? 0xffffffff : 0x0
r3 := !(a3 >= b3) ? 0xffffffff : 0x0
__m128 _mm_cmpord_ss(__m128 a, __m128 b)
順序化可能かどうか判定します。
r0 := (a0 ord? b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpord_ps(__m128 a, __m128 b)
順序化可能かどうか判定します。
r0 := (a0 ord? b0) ? 0xffffffff : 0x0
r1 := (a1 ord? b1) ? 0xffffffff : 0x0
r2 := (a2 ord? b2) ? 0xffffffff : 0x0
r3 := (a3 ord? b3) ? 0xffffffff : 0x0
__m128 _mm_cmpunord_ss(__m128 a, __m128 b)
順序化不可能かどうか判定します。
r0 := (a0 unord? b0) ? 0xffffffff : 0x0
r1 := a1 ; r2 := a2 ; r3 := a3
__m128 _mm_cmpunord_ps(__m128 a, __m128 b)
順序化不可能かどうか判定します。
r0 := (a0 unord? b0) ? 0xffffffff : 0x0
r1 := (a1 unord? b1) ? 0xffffffff : 0x0
r2 := (a2 unord? b2) ? 0xffffffff : 0x0
r3 := (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 := (a0 != b0) ? 0x1 : 0x0