首先, 要使用本文中讨论的函数和变量, 首先必须要包含头文件<emmintrin.h>.
(1) __m128i是一个128位的变量, 所以它里边可以同时存放4个32位的变量, 比如4个int型变量.
(2) 考虑函数__m128i _mm_cmpgt_epi32 (__m128i a, __m128i b). 它的参数a和b分别为__m128i型变量. 这个函数会假设a和b中分别存放着4个32位的变量, 因此它会分别比较a中的第i个变量和b中的第i个变量, 其中i = 0, 1, 2, 3. 如果a中的第i个变量大于b中的第i个变量, 则它会产生一个比较结果0xffffffff, 否则它就会产生一个比较结构0x00000000. 相应地比较结果会一次存放在另一个__m128i型的变量中, 最后这个__m128i型变量就会作为函数的返回结果.
(3) 于(2)类似,函数__m128i _mm_cmplt_epi32 (__m128i a, __m128i b)也会一次比较__m128i型变量a和b中的4个32位变量, 并将比较结果存放在另一个__m128i型变量中作为结果返回. 所不同的是, 在_mm_cmplt_epi32中, 如果a中的第i个变量小于b中的第i个变量, 则返回0xffffffff, 否则返回0x00000000.
(4) 在函数__m128i _mm_sub_epi32 (__m128i a, __m128i b)中, 函数会令__m128i变量a中的四个32位变量分别减去__m128i变量b中的四个32位变量, 相应地结果会一次存放在另一个__m128i变量中并作为结果返回给调用者.
(5) 函数__m128i _mm_set_epi32 (int e3, int e2, int e1, int e0)会定义一个__m128i变量dst, 并设置dst的内容如下:
dst[31:0] := e0
dst[63:32] := e1
dst[95:64] := e2
dst[127:96] := e3
(6) 函数__m128i _mm_set1_