Each comparison intrinsic performs a comparison of a and b. For the packed form, the four SP FP values of a and b are compared, and a 128-bit mask is returned. For the scalar form, the lower SP FP values of a and b are compared, and a 32-bit mask is returned; the upper three SP FP values are passed through from a. The mask is set to 0xffffffff for each element where the comparison is true and 0x0 where the comparison is false.
To see detailed information about an intrinsic, click on that intrinsic name in the following table.
The results of each intrinsic operation are placed in a register. This register is illustrated for each intrinsic with R or R0-R3. R0, R1, R2 and R3 each represent one of the 4 32-bit pieces of the result register.
The prototypes for Streaming SIMD Extensions (SSE) intrinsics are in the xmmintrin.h header file.
Intrinsic Name |
Operation | Corresponding SSE Instruction |
---|---|---|
_mm_cmpeq_ss | Equal | CMPEQSS |
_mm_cmpeq_ps | Equal | CMPEQPS |
_mm_cmplt_ss | Less Than | CMPLTSS |
_mm_cmplt_ps | Less Than | CMPLTPS |
_mm_cmple_ss | Less Than or Equal | CMPLESS |
_mm_cmple_ps | Less Than or Equal | CMPLEPS |
_mm_cmpgt_ss | Greater Than | CMPLTSS |
_mm_cmpgt_ps | Greater Than | CMPLTPS |
_mm_cmpge_ss | Greater Than or Equal | CMPLESS |
_mm_cmpge_ps | Greater Than or Equal | CMPLEPS |
_mm_cmpneq_ss | Not Equal | CMPNEQSS |
_mm_cmpneq_ps | Not Equal | CMPNEQPS |
_mm_cmpnlt_ss | Not Less Than | CMPNLTSS |
_mm_cmpnlt_ps | Not Less Than | CMPNLTPS |
_mm_cmpnle_ss | Not Less Than or Equal | CMPNLESS |
_mm_cmpnle_ps | Not Less Than or Equal | CMPNLEPS |
_mm_cmpngt_ss | Not Greater Than | CMPNLTSS |
_mm_cmpngt_ps | Not Greater Than | CMPNLTPS |
_mm_cmpnge_ss | Not Greater Than or Equal | CMPNLESS |
_mm_cmpnge_ps | Not Greater Than or Equal | CMPNLEPS |
_mm_cmpord_ss | Ordered | CMPORDSS |
_mm_cmpord_ps | Ordered | CMPORDPS |
_mm_cmpunord_ss | Unordered | CMPUNORDSS |
_mm_cmpunord_ps | Unordered | CMPUNORDPS |
_mm_comieq_ss | Equal | COMISS |
_mm_comilt_ss | Less Than | COMISS |
_mm_comile_ss | Less Than or Equal | COMISS |
_mm_comigt_ss | Greater Than | COMISS |
_mm_comige_ss | Greater Than or Equal | COMISS |
_mm_comineq_ss | Not Equal | COMISS |
_mm_ucomieq_ss | Equal | UCOMISS |
_mm_ucomilt_ss | Less Than | UCOMISS |
_mm_ucomile_ss | Less Than or Equal | UCOMISS |
_mm_ucomigt_ss | Greater Than | UCOMISS |
_mm_ucomige_ss | Greater Than or Equal | UCOMISS |
_mm_ucomineq_ss | Not Equal | UCOMISS |
__m128 _mm_cmpeq_ss(__m128 a, __m128 b)
Compare for equality.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpeq_ps(__m128 a, __m128 b)
Compare for equality.
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)
Compare for less-than.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 < b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmplt_ps(__m128 a, __m128 b)
Compare for less-than.
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)
Compare for less-than-or-equal.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 <= b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmple_ps(__m128 a, __m128 b)
Compare for less-than-or-equal.
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)
Compare for greater-than.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpgt_ps(__m128 a, __m128 b)
Compare for greater-than.
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)
Compare for greater-than-or-equal.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 >= b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpge_ps(__m128 a, __m128 b)
Compare for greater-than-or-equal.
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)
Compare for inequality.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 != b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpneq_ps(__m128 a, __m128 b)
Compare for inequality.
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)
Compare for not-less-than.
R0 | R1 | R2 | R3 |
---|---|---|---|
!(a0 < b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpnlt_ps(__m128 a, __m128 b)
Compare for not-less-than.
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)
Compare for not-less-than-or-equal.
R0 | R1 | R2 | R3 |
---|---|---|---|
!(a0 <= b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpnle_ps(__m128 a, __m128 b)
Compare for not-less-than-or-equal.
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)
Compare for not-greater-than.
R0 | R1 | R2 | R3 |
---|---|---|---|
!(a0 > b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpngt_ps(__m128 a, __m128 b)
Compare for not-greater-than.
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)
Compare for not-greater-than-or-equal.
R0 | R1 | R2 | R3 |
---|---|---|---|
!(a0 >= b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpnge_ps(__m128 a, __m128 b)
Compare for not-greater-than-or-equal.
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)
Compare for ordered.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 ord? b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpord_ps(__m128 a, __m128 b)
Compare for ordered.
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)
Compare for unordered.
R0 | R1 | R2 | R3 |
---|---|---|---|
(a0 unord? b0) ? 0xffffffff : 0x0 | a1 | a2 | a3 |
__m128 _mm_cmpunord_ps(__m128 a, __m128 b)
Compare for unordered.
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)
Compares the lower SP FP value of a and b for a equal to b. If a and b are equal, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_comilt_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a less than b. If a is less than b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_comile_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a less than or equal to b. If a is less than or equal to b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_comigt_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a greater than b. If a is greater than b are equal, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_comige_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a greater than or equal to b. If a is greater than or equal to b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_comineq_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a not equal to b. If a and b are not equal, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 != b0) ? 0x1 : 0x0 |
int _mm_ucomieq_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a equal to b. If a and b are equal, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 == b0) ? 0x1 : 0x0 |
int _mm_ucomilt_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a less than b. If a is less than b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 < b0) ? 0x1 : 0x0 |
int _mm_ucomile_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a less than or equal to b. If a is less than or equal to b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 <= b0) ? 0x1 : 0x0 |
int _mm_ucomigt_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a greater than b. If a is greater than or equal to b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 > b0) ? 0x1 : 0x0 |
int _mm_ucomige_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a greater than or equal to b. If a is greater than or equal to b, 1 is returned. Otherwise 0 is returned.
R |
---|
(a0 >= b0) ? 0x1 : 0x0 |
int _mm_ucomineq_ss(__m128 a, __m128 b)
Compares the lower SP FP value of a and b for a not equal to b. If a and b are not equal, 1 is returned. Otherwise 0 is returned.
R |
---|
r := (a0 != b0) ? 0x1 : 0x0
|