zoukankan      html  css  js  c++  java
  • SSE指令集系列之一数据加载与浮点运算指令

    SSE有8个128位独立寄存器(XMM1~XMM7),指令描述约定:
         MM指64位MMX寄存器
         XMM指128XMM寄存器

         m32 指32位内存变量
         m128指128位内存变量

    1. 数据传送指令

        movapsXMM,XMM/m128 movaps XMM/m128,XMM

         把源存储器内容值送入目的寄存器,当有m128时, 内存地址必须是16字节对齐的

         movups XMM,XMM/m128  movaps XMM/m128,XMM

        与 movaps 执行的结果相同,但内存地址可以不是16字节对齐的,速度没有 movaps 的快!

      movlps XMM, m64

      把源存储器64位内容送入目的寄存器低64位,高64位不变,内存地址不必16字节对齐.

      movhps XMM, m64

      把源存储器64位内容送入目的寄存器高64位,低64位不变,内存地址不必16字节对齐.

      movhlps XMM,XMM

      把源寄存器高64位送入目的寄存器低64位,高64位不变.

      movlhps XMM,XMM

      把源寄存器低64位送入目的寄存器高64位,低64位不变.  

      movss    XMM, XMM/m32

           把源寄存器低32位送入目的寄存器低32位,如果源为32为内存变量,则目的寄存器其它位清零,否则保持不变.  


           movntps m128, xmm

           把源存储器128位值直接送入内存,不经过cache

           

           movntq  m64, mm

          把源存储器64位值直接送入内存,不经过cache

    2. 单精度浮点算数运算指令

              SSE 的点算数运算指令,大致上可以分成兩种:packed 和 scalar。Packed 指令是一次对 XMM 寄存器中的四个浮点数均进行相同的运算,而 scalar 则只对 XMM寄存器中的最低  32位浮点数进行运算,高96位保持不变,如下图:

                                                        

                      addps XMM,XMM/m128

                        addss XMM,XMM/m32

                      subps XMM,XMM/m128

                      subss XMM,XMM/m32

                      mulps XMM,XMM/m128

                      mulss XMM,XMM/m32

                      divps XMM,XMM/m128

                      divss XMM,XMM/m32

                      maxps XMM,XMM/m128

                      maxss XMM,XMM/m32

                        minps XMM,XMM/m128

                      minss XMM,XMM/m32

                      rcpps XMM,XMM/m128

                      rcpss XMM,XMM/m32

                      rsqrtps XMM,XMM/m128

                      rsqrtss XMM,XMM/m32

           要点: 以PS后缀结尾的指令,如果源操作数为存储器,要求内存地址必须是16字节对齐的。而以SS后缀结尾的指令,没有这个限制。

     3. 位运算指令

       andps XMM,XMM/m128

      源存储器128个二进制位'与'目的寄存器128个二进制位,结果送入目的寄存器,内存变量地址必须16字节对齐.

      orps XMM,XMM/m128
      源存储器128个二进制位'或'目的寄存器128个二进制位,结果送入目的寄存器,内存变量地址必须16字节对齐.

      xorps XMM,XMM/m128
      源存储器128个二进制位'异或'目的寄存器128个二进制位,结果送入目的寄存器,内存变量地址必须16字节对齐

  • 相关阅读:
    Android 开发工具类 19_NetworkStateReceiver
    Android 开发工具类 18_NetWorkUtil
    Sticky Footer (让页脚永远停靠在页面底部,而不是根据绝对位置)
    min-height最小高度的实现(兼容IE6、IE7、FF)(解决IE6不兼容min-height)
    不同浏览器设置背景透明度
    讨论内外边距对行内元素是否起作用,则要对行内替换元素和行内非替换元素分别讨论:
    超链接访问过后hover样式就不出现的问题
    解决:子元素设置margin-top,父元素也受影响的问题
    制作0.5px像素的细条
    去掉inline-block元素间隙的几种方法
  • 原文地址:https://www.cnblogs.com/celerychen/p/3588230.html
Copyright © 2011-2022 走看看