文档章节

SSE指令集系列之一----数据加载与浮点运算指令

abcijkxyz
 abcijkxyz
发布于 2016/11/22 16:45
字数 730
阅读 92
收藏 0

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字节对齐

 

 

 

 

本文转载自:http://www.cnblogs.com/celerychen/archive/2013/04/23/3588230.html

共有 人打赏支持
abcijkxyz
粉丝 64
博文 6196
码字总数 1876
作品 0
深圳
项目经理
armeabi和armeabi-v7a 以及x86

原文:http://blog.csdn.net/dxpqxb/article/details/7721156 armeabi和armeabi-v7a 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的...

QGlaunch
2015/12/23
99
0
Intel 45nm制程处理器上的SSE4指令集简介

Intel 45nm制程处理器上的SSE4指令集简介 Intel的SSE(Streaming SIMD Extensions, 流式单指令多数据扩展)技术有效增强了CPU的向量运算能力。支持该指令集的处理器有8个128位xmm寄存器,每一...

日久不生情
2017/11/07
0
0
(学习心得):进程,线程,超线程,并发,并行 等概念

前言: 此陋文来自最近对阅读《深入理解计算机系统》与《微型计算机体系结构:Intel Core Duo / i 系列微处理器技术应用》两本书的学习体会, 前者从 程序员的视角来探讨计算机系统中各部件的...

shayi
2012/11/26
5.5K
28
【JZ2440】自我学习记录【知识点0】【ARM指令集体系结构和ARM系列】

本文会介绍:1、ARM指令集体系结构及特点; 2、基于ARM指令集体系结构设计的不同CPU家族及特点; 3、ARM指令集体系结构和ARM处理器家族的区别。 ARM系列微处理器的核心及体系结构 序号 ARM微...

huayangshiboqi
2017/12/13
0
0
/proc/cpuinfo文件分析(查看CPU信息)

  在Linux系统中,提供了proc文件系统显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到。本文章针对该文件进行简单的总结。   基于不...

zhiqiangw
2016/11/18
33
0

没有更多内容

加载失败,请刷新页面

加载更多

IOasd

能够使用FileUtils常用方法操作文件 字符流体系介绍 : 在 IO 开发中, 我们传输最频繁的数据为字符, 而以字节的方式来传输字符数据会使程序员丧失对数据内容的判断.因为程序员只认识字符, 不认...

码农屌丝
23分钟前
0
0
创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
3
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
9
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部