Developer Guide and Reference

Contents

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 for:
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 values for each class of the conditional select operators, using the Return Value Notation described earlier.
Compare Operator Return Value Mapping
R
A0
Operators
B
C
D
F32vec4
F64vec2
F32vec1
R0:=
(A1
!(A1
select_[eq | lt | le | gt | ge]
select_[ne | nlt | nle | ngt | nge]
B0)
B0)
C0
C0
D0
D0
X
X
X
R1:=
(A2
!(A2
select_[eq | lt | le | gt | ge]
select_[ne | nlt | nle | ngt | nge]
B1)
B1)
C1
C1
D1
D1
X
X
N/A
R2:=
(A2
!(A2
select_[eq | lt | le | gt | ge]
select_[ne | nlt | nle | ngt | nge]
B2)
B2)
C2
C2
D2
D2
X
N/A
N/A
R3:=
(A3
!(A3
select_[eq | lt | le | gt | ge]
select_[ne | nlt | nle | ngt | nge]
B3)
B3)
C3
C3
D3
D3
X
N/A
N/A
The following table shows examples for conditional select operations and corresponding intrinsics.
Conditional Select Operations for Fvec Classes
Returns
Example Syntax Usage
Intrinsic
Compare for 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
Compare for 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
Compare for 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
Compare for Less Than or Equal
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
Compare for 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
Compare for 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
Compare for 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
Compare for Not Less Than or Equal
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
Compare for 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
Compare for Not Greater Than or Equal
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

Product and Performance Information

1

Performance varies by use, configuration and other factors. Learn more at www.Intel.com/PerformanceIndex.