Compare Operators
The operators described in this section compare the
single precision floating-point values of
A
and
B
. Comparison between
objects of any
Fvec
class return the same
class being compared.
The following table lists the compare operators for
the
Fvec
classes.
Compare Operators and Corresponding
Intrinsics
Compare For:
| Operators
| Syntax
|
---|---|---|
Equality
| cmpeq | R
= cmpeq(A, B) |
Inequality
| cmpneq | R
= cmpneq(A, B) |
Greater Than
| cmpgt | R
= cmpgt(A, B) |
Greater Than or Equal To
| cmpge | R
= cmpge(A, B) |
Not Greater Than
| cmpngt | R
= cmpngt(A, B) |
Not Greater Than or Equal To
| cmpnge | R
= cmpnge(A, B) |
Less Than
| cmplt | R
= cmplt(A, B) |
Less Than or Equal To
| cmple | R
= cmple(A, B) |
Not Less Than
| cmpnlt | R
= cmpnlt(A, B) |
Not Less Than or Equal To
| cmpnle | R
= cmpnle(A, B) |
Compare Operators
The mask is set to
0xffffffff
for each
floating-point value where the comparison is true and
0x00000000
where the
comparison is false. The following table shows the return values for each class
of the compare operators, which use the syntax described earlier in the
Return Value Notation section.
Compare Operator Return Value
Mapping
R
| A0
| For Any Operators
| B
| If True
| If False
| F32vec4
| F64vec2
| F32vec1
|
---|---|---|---|---|---|---|---|---|
R0:=
| (A1!(A1
| cmp[eq | lt | le | gt | ge]cmp[ne | nlt | nle | ngt | nge]
| B1)B1)
| 0xffffffff
| 0x0000000
| X
| X
| X
|
R1:=
| (A1!(A1
| cmp[eq | lt | le | gt | ge]cmp[ne | nlt | nle | ngt | nge]
| B2)B2)
| 0xffffffff
| 0x0000000
| X
| X
| N/A
|
R2:=
| (A1!(A1
| cmp[eq | lt | le | gt | ge]cmp[ne | nlt | nle | ngt | nge]
| B3)B3)
| 0xffffffff
| 0x0000000
| X
| N/A
| N/A
|
R3:=
| A3
| cmp[eq | lt | le | gt | ge]cmp[ne | nlt | nle | ngt | nge]
| B3)B3)
| 0xffffffff
| 0x0000000
| X
| N/A
| N/A
|
The following table shows examples for arithmetic
operators and intrinsics.
Compare Operations for Fvec Classes
Returns
| Example Syntax Usage
| Intrinsic
|
---|---|---|
Compare for Equality
| ||
4 floats
| F32vec4 R = cmpeq(F32vec4 A); | _mm_cmpeq_ps |
2 doubles
| F64vec2 R = cmpeq(F64vec2 A); | _mm_cmpeq_pd |
1 float
| F32vec1 R = cmpeq(F32vec1 A); | _mm_cmpeq_ss |
Compare for Inequality
| ||
---|---|---|
4 floats
| F32vec4 R = cmpneq(F32vec4 A); | _mm_cmpneq_ps |
2 doubles
| F64vec2 R = cmpneq(F64vec2 A); | _mm_cmpneq_pd |
1 float
| F32vec1 R = cmpneq(F32vec1 A); | _mm_cmpneq_ss |
Compare for Less Than
| ||
---|---|---|
4 floats
| F32vec4 R = cmplt(F32vec4 A); | _mm_cmplt_ps |
2 doubles
| F64vec2 R = cmplt(F64vec2 A); | _mm_cmplt_pd |
1 float
| F32vec1 R = cmplt(F32vec1 A); | _mm_cmplt_ss |
Compare for Less Than or Equal
| ||
---|---|---|
4 floats
| F32vec4 R = cmple(F32vec4 A); | _mm_cmple_ps |
2 doubles
| F64vec2 R = cmple(F64vec2 A); | _mm_cmple_pd |
1 float
| F32vec1 R = cmple(F32vec1 A); | _mm_cmple_pd |
Compare for Greater Than
| ||
---|---|---|
4 floats
| F32vec4 R = cmpgt(F32vec4 A); | _mm_cmpgt_ps |
2 doubles
| F64vec2 R = cmpgt(F32vec42 A); | _mm_cmpgt_pd |
1 float
| F32vec1 R = cmpgt(F32vec1 A); | _mm_cmpgt_ss |
Compare for Greater Than or Equal To
| ||
---|---|---|
4 floats
| F32vec4 R = cmpge(F32vec4 A); | _mm_cmpge_ps |
2 doubles
| F64vec2 R = cmpge(F64vec2 A); | _mm_cmpge_pd |
1 float
| F32vec1 R = cmpge(F32vec1 A); | _mm_cmpge_ss |
Compare for Not Less Than
| ||
---|---|---|
4 floats
| F32vec4 R = cmpnlt(F32vec4 A); | _mm_cmpnlt_ps |
2 doubles
| F64vec2 R = cmpnlt(F64vec2 A); | _mm_cmpnlt_pd |
1 float
| F32vec1 R = cmpnlt(F32vec1 A); | _mm_cmpnlt_ss |
Compare for Not Less Than or Equal
| ||
---|---|---|
4 floats
| F32vec4 R = cmpnle(F32vec4 A); | _mm_cmpnle_ps |
2 doubles
| F64vec2 R = cmpnle(F64vec2 A); | _mm_cmpnle_pd |
1 float
| F32vec1 R = cmpnle(F32vec1 A); | _mm_cmpnle_ss |
Compare for Not Greater Than
| ||
---|---|---|
4 floats
| F32vec4 R = cmpngt(F32vec4 A); | _mm_cmpngt_ps |
2 doubles
| F64vec2 R = cmpngt(F64vec2 A); | _mm_cmpngt_pd |
1 float
| F32vec1 R = cmpngt(F32vec1 A); | _mm_cmpngt_ss |
Compare for Not Greater Than or Equal
| ||
---|---|---|
4 floats
| F32vec4 R = cmpnge(F32vec4 A); | _mm_cmpnge_ps |
2 doubles
| F64vec2 R = cmpnge(F64vec2 A); | _mm_cmpnge_pd |
1 float
| F32vec1 R = cmpnge(F32vec1 A); | _mm_cmpnge_ss |