SSE指令集系列之二----浮点与整数转换指令
SSE指令集系列之二----浮点与整数转换指令
abcijkxyz 发表于2年前
SSE指令集系列之二----浮点与整数转换指令
  • 发表于 2年前
  • 阅读 33
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

4. 数据重排指令集

  unpckhps XMM,XMM/m128

  源存储器与目的寄存器高64位按双字交错排列,结果送入目的寄存器,内存变量必须对齐内存16字节.
            高64位 | 低64位
    目的寄存器:    a0 | a1 | a2 | a3
    源存储器:     b0 | b1 | b2 | b3
    目的寄存器结果:  b0 | a0 | b1 | a1
    例:
    当  XMM0 = 0x 0c517e000  44290000 46b6d000 3c4985f0
         XMM1 = 0x 045e51000 4240cccd  4a59e540  3a77b9e0,

            当执行 unpckhps XMM0,XMM1
               则 XMM0 = 0x 045e51000 c517e000 4240cccd 44290000

  unpcklps XMM,XMM/m128

  源存储器与目的寄存器低64位按双字交错排列,结果送入目的寄存器,内存变量必须对齐内存16字节.
          高64位 | 低64位
  目的寄存器:    a0 | a1  | a2 | a3
  源存储器:       b0 | b1 | b2 | b3
  目的寄存器结果:  b2 | a2 | b3 | a3
  例:
  当XMM0 = 0x 0c517e000 44290000 46b6d000 3c4985f0
     XMM1 = 0x 045e51000 4240cccd  4a59e540 3a77b9e0,

       执行 unpcklps XMM0,XMM1
   则 XMM0 = 0x 04a59e540 46b6d000 3a77b9e0 3c4985f0

 

 5. 单精度浮点数与整数相互转换指令

    cvtpi2ps XMM,MM/m64

    源存储器64位两个32位有符号(补码)整数转为两个单精度浮点数,放入目的寄存器低64中,高64位不变.

    源寄存器是'MM',不是'XMM'

 

    cvtsi2ss XMM,r32/m32

    源存储器1个32位有符号(补码)整数转为1个单精度浮点数,放入目的寄存器低32中,高96位不变.

 

  cvtps2pi MM,XMM/m64

    把源存储器低64位两个32位单精度浮点数转为两个32位有符号整数,放入目的寄存器.

 

    cvtss2si r32,XMM/m32

    把源存储器低32位1个单精度浮点数转为1个32位有符号整数,放入目的寄存器.

 

 

 

 

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 60
博文 6195
码字总数 1876
×
abcijkxyz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: