Intel® oneAPI DPC++/C++ Compiler Developer Guide and Reference

ID 767253
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of 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

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)

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
!(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:

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