所有的SSE2指令的声明都在emmintrin.h头文件中可以找得到。
逻辑操作指令;
1. __m128i _mm_and_si128 ( __m128i a, __m128i b);
指令名: __m128i _mm_and_si128 ( __m128i a, __m128i b);
说明:将a中128 bits数值与b中的128bits数值对应位按位做"与(AND)"运算;
返回值:返回按位"与(AND)"运算后的结果,如下:
r := a & b
2. __m128i _mm_andnot_si128 ( __m128i a, __m128i b);
指令名:__m128i _mm_andnot_si128 ( __m128i a, __m128i b);
说明:将a中128 bits数值先做"非(NOT)"操作,然后与b中的128bits数值对应位按位做"与(AND)"运算;
返回值:返回"非(NOT)"a,后按位"与(AND)"运算后的结果,如下:
r := (~a) & b
3. __m128i _mm_or_si128 ( __m128i a, __m128i b);
指令名: __m128i _mm_or_si128 ( __m128i a, __m128i b);
说明:将a中128 bits数值与b中的128bits数值对应位按位做"或(OR)"运算;
返回值:返回按位"或(OR)"运算后的结果,如下:
r := a | b
4. __m128i _mm_xor_si128 ( __m128i a, __m128i b);
指令名: __m128i _mm_xor_si128 ( __m128i a, __m128i b);
说明:将a中128 bits数值与b中的128bits数值对应位按位做"异或(XOR)"运算;
返回值:返回按位"异或(XOR)"运算后的结果,如下:
r := a ^ b