The prototypes for Intel® Streaming SIMD Extensions (Intel® SSE) intrinsics for comparision operations are in the xmmintrin.h header file.
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.
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 four 32-bit pieces of the result register.
Intrinsic Name |
Operation |
Corresponding |
---|---|---|
_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 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 == b0) ? 0xffffffff : 0x0 |
(a1 == b1) ? 0xffffffff : 0x0 |
(a2 == b2) ? 0xffffffff : 0x0 |
(a3 == b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 < b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
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)
Compares for less-than-or-equal.
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 <= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 <= b0) ? 0xffffffff : 0x0 |
(a1 <= b1) ? 0xffffffff : 0x0 |
(a2 <= b2) ? 0xffffffff : 0x0 |
(a3 <= b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 > b0) ? 0xffffffff : 0x0 |
(a1 > b1) ? 0xffffffff : 0x0 |
(a2 > b2) ? 0xffffffff : 0x0 |
(a3 > b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 >= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 >= b0) ? 0xffffffff : 0x0 |
(a1 >= b1) ? 0xffffffff : 0x0 |
(a2 >= b2) ? 0xffffffff : 0x0 |
(a3 >= b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 != b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
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)
Compares for not-less-than.
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 < b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 < b0) ? 0xffffffff : 0x0 |
!(a1 < b1) ? 0xffffffff : 0x0 |
!(a2 < b2) ? 0xffffffff : 0x0 |
!(a3 < b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 <= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 <= b0) ? 0xffffffff : 0x0 |
!(a1 <= b1) ? 0xffffffff : 0x0 |
!(a2 <= b2) ? 0xffffffff : 0x0 |
!(a3 <= b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 > b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 > b0) ? 0xffffffff : 0x0 |
!(a1 > b1) ? 0xffffffff : 0x0 |
!(a2 > b2) ? 0xffffffff : 0x0 |
!(a3 > b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
!(a0 >= b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
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)
Compares for ordered.
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 ord? b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 ord? b0) ? 0xffffffff : 0x0 |
(a1 ord? b1) ? 0xffffffff : 0x0 |
(a2 ord? b2) ? 0xffffffff : 0x0 |
(a3 ord? b3) ? 0xffffffff : 0x0 |
R0 |
R1 |
R2 |
R3 |
---|---|---|---|
(a0 unord? b0) ? 0xffffffff : 0x0 |
a1 |
a2 |
a3 |
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 |
Copyright © 1996-2011, Intel Corporation. All rights reserved.