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 AHandle AMessage
    android java 与C 通过 JNI双向通信
    android 系统给应用的jar
    UE4 unreliable 同步问题
    UE4 difference between servertravel and openlevel(多人游戏的关卡切换)
    UE4 Run On owing Client解析(RPC测试)
    UE4 TSubclassOf VS Native Pointer
    UE4 内容示例网络同步Learn
    UE4 多人FPS VR游戏制作笔记
    UE4 分层材质 Layerd Materials
  • 原文地址:https://www.cnblogs.com/celerychen/p/3588230.html
Copyright © 2011-2022 走看看