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

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.

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 |