Visible to Intel only — GUID: GUID-49FD7B9C-7E0D-44B1-8BE5-579CA00E7B0C
Visible to Intel only — GUID: GUID-49FD7B9C-7E0D-44B1-8BE5-579CA00E7B0C
Conditional Select Operators for Fvec Classes
Each conditional function compares single-precision floating-point values of A and B. The C and D parameters are used for return value. Comparison between objects of any Fvec class returns the same class.
Conditional Select Operators for Fvec Classes
Conditional Select |
Operators |
Syntax |
---|---|---|
Equality |
select_eq |
R = select_eq(A, B) |
Inequality |
select_neq |
R = select_neq(A, B) |
Greater Than |
select_gt |
R = select_gt(A, B) |
Greater Than or Equal To |
select_ge |
R = select_ge(A, B) |
Not Greater Than |
select_gt |
R = select_gt(A, B) |
Not Greater Than or Equal To |
select_ge |
R = select_ge(A, B) |
Less Than |
select_lt |
R = select_lt(A, B) |
Less Than or Equal To |
select_le |
R = select_le(A, B) |
Not Less Than |
select_nlt |
R = select_nlt(A, B) |
Not Less Than or Equal To |
select_nle |
R = select_nle(A, B) |
Conditional Select Operator Usage
For conditional select operators, the return value is stored in C if the comparison is true or in D if false. The following table shows the return value mapping for each class of the conditional select operators, using the Return Value Notation.
R |
A0 |
Operators |
B |
C |
D |
F32vec4 |
F64vec2 |
F32vec1 |
---|---|---|---|---|---|---|---|---|
R0:= |
(A1 |
select_[eq | lt | le | gt | ge] |
B0) |
C0 |
D0 |
X |
X |
X |
R1:= |
(A2 |
select_[eq | lt | le | gt | ge] |
B1) |
C1 |
D1 |
X |
X |
N/A |
R2:= |
(A2 |
select_[eq | lt | le | gt | ge] |
B2) |
C2 |
D2 |
X |
N/A |
N/A |
R3:= |
(A3 |
select_[eq | lt | le | gt | ge] |
B3) |
C3 |
D3 |
X |
N/A |
N/A |
The following table shows examples for conditional select operations and corresponding intrinsics:
Comparison | Returns |
Example Syntax Usage |
Intrinsic |
---|---|---|---|
Equality | 4 floats |
F32vec4 R = select_eq(F32vec4 A); |
_mm_cmpeq_ps |
2 doubles |
F64vec2 R = select_eq(F64vec2 A); |
_mm_cmpeq_pd |
|
1 float |
F32vec1 R = select_eq(F32vec1 A); |
_mm_cmpeq_ss |
|
Inequality | 4 floats |
F32vec4 R = select_neq(F32vec4 A); |
_mm_cmpneq_ps |
2 doubles |
F64vec2 R = select_neq(F64vec2 A); |
_mm_cmpneq_pd |
|
1 float |
F32vec1 R = select_neq(F32vec1 A); |
_mm_cmpneq_ss |
|
Greater Than | 4 floats |
F32vec4 R = select_gt(F32vec4 A); |
_mm_cmpgt_ps |
2 doubles |
F64vec2 R = select_gt(F64vec2 A); |
_mm_cmpgt_pd |
|
1 float |
F32vec1 R = select_gt(F32vec1 A); |
_mm_cmpgt_ss |
|
Greater Than or Equal To | 4 floats |
F32vec1 R = select_ge(F32vec4 A); |
_mm_cmpge_ps |
2 doubles |
F64vec2 R = select_ge(F64vec2 A); |
_mm_cmpge_pd |
|
1 float |
F32vec1 R = select_ge(F32vec1 A); |
_mm_cmpge_ss |
|
Not Greater Than | 4 floats |
F32vec1 R = select_ngt(F32vec4 A); |
_mm_cmpngt_ps |
2 doubles |
F64vec2 R = select_ngt(F64vec2 A); |
_mm_cmpngt_pd |
|
1 float |
F32vec1 R = select_ngt(F32vec1 A); |
_mm_cmpngt_ss |
|
Not Greater Than or Equal To | 4 floats |
F32vec1 R = select_nge(F32vec4 A); |
_mm_cmpnge_ps |
2 doubles |
F64vec2 R = select_nge(F64vec2 A); |
_mm_cmpnge_pd |
|
1 float |
F32vec1 R = select_nge(F32vec1 A); |
_mm_cmpnge_ss |
|
Less Than | 4 floats |
F32vec4 R = select_lt(F32vec4 A); |
_mm_cmplt_ps |
2 doubles |
F64vec2 R = select_lt(F64vec2 A); |
_mm_cmplt_pd |
|
1 float |
F32vec1 R = select_lt(F32vec1 A); |
_mm_cmplt_ss |
|
Less Than or Equal To | 4 floats |
F32vec4 R = select_le(F32vec4 A); |
_mm_cmple_ps |
2 doubles |
F64vec2 R = select_le(F64vec2 A); |
_mm_cmple_pd |
|
1 float |
F32vec1 R = select_le(F32vec1 A); |
_mm_cmple_ps |
|
Not Less Than | 4 floats |
F32vec1 R = select_nlt(F32vec4 A); |
_mm_cmpnlt_ps |
2 doubles |
F64vec2 R = select_nlt(F64vec2 A); |
_mm_cmpnlt_pd |
|
1 float |
F32vec1 R = select_nlt(F32vec1 A); |
_mm_cmpnlt_ss |
|
Not Less Than or Equal To | 4 floats |
F32vec1 R = select_nle(F32vec4 A); |
_mm_cmpnle_ps |
2 doubles |
F64vec2 R = select_nle(F64vec2 A); |
_mm_cmpnle_pd |
|
1 float |
F32vec1 R = select_nle(F32vec1 A); |
_mm_cmpnle_ss |