SSE2指令--使用SSE2的整型指令:算数操作指令-2

   1. __m128i _mm_add_epi8(__m128i a ,__m128i b);
       指令名 __m128i _mm_add_epi8(__m128i a ,__m128i b);
         说明将a中16个8位有符号或无符号整数与对应的b中的16个8位有符号或无符号整数相加。
       返回值加入a,b中16个8位整数分别如下排列:a0,a1,.....,a14,a15和b0,b1,......,b14,b15,对应的返回值__m128i 排列为
                 r0,r1,......,r14,r15,则有如下对应关系:
                r0 := a0 + b0
              r1 := a1 + b1
              ...
              r15 := a15 + b15
  2. __m128i _mm_add_epi16(__m128i a, __m128i b);
指令名: __m128i _mm_add_epi16(__m128i a, __m128i b);
          说明将a中8个16位有符号或无符号整数与对应的b中的8个16位有符号或无符号整数相加。
         返回值加入a,b中8个16位整数分别如下排列:a0,a1,.....,a7和b0,b1,......,b7,对应的返回值__m128i 排列为
                 r0,r1,......,r7,则有如下对应关系:
                   r0 := a0 + b0
                r1 := a1 + b1
                ...
                r7 := a7 + b7
3. __m128i _mm_add_epi32(__m128i a ,__m128i b);
       指令名 __m128i _mm_add_epi8(__m128i a ,__m128i b);
         说明将a中4个32位有符号或无符号整数与对应的b中的4个32位有符号或无符号整数相加。
        返回值加入a,b中4个32位整数分别如下排列:a0,a1,a2,a3和b0,b1,b2,b3对应的返回值__m128i 排列为
                 r0,r1,r2,r3则有如下对应关系:               
                    r0 := a0 + b0
                 r1 := a1 + b1
                 r2 := a2 + b2
                 r3 := a3 + b3
4. __m64 _mm_add_si64(__m64 a ,__m64 b);
       指令名__m64 _mm_add_si64(__m64 a ,__m64 b);
         说明将64位有符号或无符号整数a与64位有符号或无符号整数b相加。
        返回值加入a,b中64位整数分别如下排列:a0和b0对应的返回值__m64排列为
                 r0则有如下对应关系:               
                    r0 := a0 + b0
                
5. __m128i _mm_add_epi64(__m128i a ,__m128i b);
       指令名 __m128i _mm_add_epi64(__m128i a ,__m128i b);
         说明将a中2个64位有符号或无符号整数与对应的b中的2个64位有符号或无符号整数相加。
        返回值加入a,b中2个64位整数分别如下排列:a0,a1和b0,b1对应的返回值__m128i 排列为
                 r0,r1则有如下对应关系:               
                    r0 := a0 + b0
                 r1 := a1 + b1
6. __m128i _mm_adds_epi8(__m128i a ,__m128i b);
       指令名 __m128i _mm_adds_epi8(__m128i a ,__m128i b);
         说明将a中16个8位有符号整数与对应的b中的16个8位有符号整数相加,并启用饱和机制。
        返回值加入a,b中16个8位有符号整数分别如下排列:a0,a1,...,a15和b0,b1,...,b15对应的返回值__m128i 排列为
                 r0,r1,...,r15则有如下对应关系:               
                 r0 := SignedSaturate(a0 + b0)
               r1 := SignedSaturate(a1 + b1)
               ... 
               r15 := SignesSaturate(a15 + b15)
7. __m128i _mm_adds_epi16(__m128i a, __m128i b);
            这个指令和上面2的关系,同6和1的关系是一样的,在此不再赘述!
8. __m128i _mm_adds_epu8(__m128i a, __m128i b);
            这个指令和上面6的唯一区别就是6中为有符号整型,而这个指令中为无符号整型!其余的是一样的。
9. __m128i _mm_adds_epu16(__m128i a, __m128i b);
            这个指令和上面7的唯一区别就是6中为有符号整型,而这个指令中为无符号整型!其余的是一样的。
10. __m128i _mm_avg_epu8(__m128i a, __m128i b);
     指令名: __m128i _mm_avg_epu8(__m128i a, __m128i b);
       说明:将a中16个8位无符号整数与对应的b中的16个8位无符号整数取平均,并取整。
     返回值:加入a,b中16个8位无符号整数分别如下排列:a0,a1,...,a15和b0,b1,...,b15对应的返回值__m128i 排列为
                 r0,r1,...,r15则有如下对应关系:               
                 r0:= (a0 + b0)/2
               r1:= a1 + b1)/2
               ... 
               r15:= (a15 + b15)/2
11. __m128i _mm_avg_epu16(__m128i a, __m128i b);
            这个指令同10的差别就是该指令对应的是8个16位无符号整数对应位取平均,并取整!
12. __m128i _mm_madd_epi16 ( __m128i a, __m128i b);
      指令名: __m128i _mm_madd_epi16 ( __m128i a, __m128i b);
       说明:将a中8个16位有符号整数与对应的b中的8个16位有符号整数相乘。
     返回值:加入a,b中16个8位有符号整数分别如下排列:a0,a1,...,a8和b0,b1,...,b8对应的返回值__m128i数值,但是这个数值的排列方式为
           4个32位有符号整数组成,假设分别r0,r1,r2,r3,则对应关系为
                 r0,r1,...,r8则有如下对应关系:               
                 r0:= (a0 * b0)+(a1 * b1)
               r1:= (a2 * b2)+(a3 * b3)
               r2:= (a4 * b4)+(a5 * b5) 
               r3:= (a6 * b6)+(a7 * b7) 
13. __m128i _mm_max_epi16(__m128i a, __m128i b); 
       指令名: __m128i _mm_max_epi16(__m128i a, __m128i b);
         说明将a中8个16位有符号整数与对应的b中的8个16位有符号整数分别比较去较大值。
       返回值加入a,b中8个16位整数分别如下排列:a0,a1,.....,a7和b0,b1,......,b7,对应的返回值__m128i 排列为
                 r0,r1,......,r7,则有如下对应关系:
                   r0 := max(a0,b0)                
                r1 := max(a1,b1)                
                  ...
                r7 := max(a7,b7) 
14. __m128i _mm_max_epu8 (__m128i a, __m128i b);
          此指令与13中不同点在于对应整数为16个8位无符号整数对应取较大值,其余意义相同;
15. __m128i _mm_min_epi16(__m128i a, __m128i b); 
          此指令同13的唯一区别是对位取较小值来最后存储返回,其余同13一样;
16. __m128i _mm_min_epu8 (__m128i a, __m128i b);
          此指令与14中不同点在于对应整数为16个8位无符号整数对应取较xiao值,其余意义相同;
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值