博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SSE指令集系列之二----浮点与整数转换指令
阅读量:5742 次
发布时间:2019-06-18

本文共 1129 字,大约阅读时间需要 3 分钟。

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位有符号整数,放入目的寄存器.

 

 

 

 

 

 

转载于:https://www.cnblogs.com/celerychen/archive/2013/04/23/3588229.html

你可能感兴趣的文章
webapck html-loader实现资源复用
查看>>
[NOI2018]你的名字
查看>>
UOJ#428. 【集训队作业2018】普通的计数题
查看>>
无法成为野兽的我
查看>>
Android 屏蔽recent task 按钮
查看>>
Find Memory Leaks
查看>>
Install libGeoIP in linux
查看>>
Codeigniter CRUD代码快速构建
查看>>
表达式计算器的实现
查看>>
hibernate关于程序正常登录后返回再次操作后500异常的问题
查看>>
每天学点GDB 3
查看>>
字符提取命令
查看>>
Ubuntu网卡配置
查看>>
数据库基础
查看>>
Receiving and Processing a SAML 2.0 Response With an HttpServlet Using OpenSAML
查看>>
BZOJ1721 Ski Lift 缆车支柱
查看>>
发现一个开源项目-Altairis Simple ASP.NET SQL Providers
查看>>
关于Socket通讯时通讯协议的制定
查看>>
HDU-1150-MachineSchedule(二分图匹配)
查看>>
PHP session 跨子域问题总结
查看>>