Logical Operators

The table below lists the logical operators of the Fvec classes and generic syntax. The logical operators for F32vec1 classes use only the lower 32 bits.

Fvec Logical Operators Return Value Mapping

Bitwise Operation Operators Generic Syntax
AND &
&=
R = A & B;
R &= A;
OR |
|=
R = A | B;
R |= A;
XOR ^
^=
R = A ^ B;
R ^= A;
andnot andnot R = andnot(A);

The following table lists standard logical operators syntax and corresponding intrinsics. Note that there is no corresponding scalar intrinsic for the F32vec1 classes, which accesses the lower 32 bits of the packed vector intrinsics.

Logical Operations for Fvec Classes

Operation Returns Example Syntax Usage Intrinsic
AND 4 floats F32vec4 & = F32vec4 A & F32vec4 B;
F32vec4 & &= F32vec4 A;
_mm_and_ps
  2 doubles F64vec2 R = F64vec2 A & F32vec2 B;
F64vec2 R &= F64vec2 A;
_mm_and_pd
  1 float F32vec1 R = F32vec1 A & F32vec1 B;
F32vec1 R &= F32vec1 A;
_mm_and_ps
OR 4 floats F32vec4 R = F32vec4 A | F32vec4 B;
F32vec4 R |= F32vec4 A;
_mm_or_ps
  2 doubles F64vec2 R = F64vec2 A | F32vec2 B;
F64vec2 R |= F64vec2 A;
_mm_or_pd
  1 float F32vec1 R = F32vec1 A | F32vec1 B;
F32vec1 R |= F32vec1 A;
_mm_or_ps
XOR 4 floats F32vec4 R = F32vec4 A ^ F32vec4 B;
F32vec4 R ^= F32vec4 A;
_mm_xor_ps
  2 doubles F64vec2 R = F64vec2 A ^ F364vec2 B;
F64vec2 R ^= F64vec2 A;
_mm_xor_pd
  1 float F32vec1 R = F32vec1 A ^ F32vec1 B;
F32vec1 R ^= F32vec1 A;
_mm_xor_ps
ANDNOT 2 doubles F64vec2 R = andnot(F64vec2 A,
F64vec2 B);
_mm_andnot_pd