Logical Operations (Integer SSE2 Intrinsics)
Microsoft Specific
The following four logical operation intrinsics and their respective instructions are functional on Intel processors that support Streaming SIMD Extensions 2 (SSE2) instructions.
For an explanation of the syntax used in code samples in this topic, see Floating-Point Intrinsics Using Streaming SIMD Extensions.
SSE2 intrinsics use the __m128, __m128i, and __m128d data types, which are not supported on Itanium Processor Family (IPF) processors. Any SSE2 intrinsics that use the __m64 data type are not supported on x64 processors.
The emmintrin.h header file contains the declarations for the SSE2 instructions intrinsics.
__m128i _mm_and_si128 (__m128i a, __m128i b);
PAND
Computes the bitwise AND of the 128-bit value in a and the 128-bit value in b.
r := a & b
__m128i _mm_andnot_si128 (__m128i a, __m128i b);
PANDN
Computes the bitwise AND of the 128-bit value in b and the bitwise NOT of the 128-bit value in a.
r := (~a) & b
__m128i _mm_or_si128 (__m128i a, __m128i b);
POR
Computes the bitwise OR of the 128-bit value in a and the 128-bit value in b.
r := a | b
__m128i _mm_xor_si128 ( __m128i a, __m128i b);
PXOR
Computes the bitwise XOR of the 128-bit value in a and the 128-bit value in b.
r := a ^ b