Visible to Intel only — GUID: GUID-3059DD1B-2280-4CDB-B7D4-D31AE6C74E74
Visible to Intel only — GUID: GUID-3059DD1B-2280-4CDB-B7D4-D31AE6C74E74
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:
Comparison |
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:
R |
A0 |
For Any Operators |
B |
If True |
If False |
F32vec4 |
F64vec2 |
F32vec1 |
---|---|---|---|---|---|---|---|---|
R0:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B1) |
0xffffffff |
0x0000000 |
X |
X |
X |
R1:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B2) |
0xffffffff |
0x0000000 |
X |
X |
N/A |
R2:= |
(A1 |
cmp[eq | lt | le | gt | ge] |
B3) |
0xffffffff |
0x0000000 |
X |
N/A |
N/A |
R3:= |
A3 |
cmp[eq | lt | le | gt | ge] |
B3) |
0xffffffff |
0x0000000 |
X |
N/A |
N/A |
The following table shows examples for comparison operators and intrinsics:
Comparison | Returns |
Example Syntax Usage |
Intrinsic |
---|---|---|---|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Not Greater Than or Equal To | 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 |
|
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 |
|
Less Than or Equal To | 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 |
|
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 |
|
Not Less Than or Equal To | 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 |