C语言/英特尔SSE中若干函数的定义.

首先, 要使用本文中讨论的函数和变量, 首先必须要包含头文件<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_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值