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 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) |

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.

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.

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 |