zoukankan      html  css  js  c++  java
  • SSE指令集系列之二浮点与整数转换指令

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

  • 相关阅读:
    POJ 1328 Radar Installation
    POJ 1700 Crossing River
    POJ 1700 Crossing River
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3253 Fence Repair (贪心,优先队列)
    poj 3069 Saruman's Army(贪心)
    poj 3069 Saruman's Army(贪心)
    Redis 笔记与总结2 String 类型和 Hash 类型
    数据分析方法有哪些_数据分析方法
    数据分析方法有哪些_数据分析方法
  • 原文地址:https://www.cnblogs.com/celerychen/p/3588229.html
Copyright © 2011-2022 走看看