SSE 64-Bit SIMD Integer Instructions

SSE扩展增加了几条64位组合的整型指令,这些指令操作MMX寄存器和64位的存储器操作数,这些指令可以看作是对MMX指令集的扩展。当后来在IA-32处理器上引入SSE2扩展时,这些指令也被扩展位操作128位的XMM寄存器和128位的存储器操作数。

指令

描述

PAVGB

格式:PAVGB mm1, mm2/m64

将mm1与mm2/m64中对应的数据元素,即组合的无符号字节整型数,相加除以2,求平均数,使用四舍五入。

指令操作:

DEST[7:0] <-- (SRC[7:0] + DEST[7:0] + 1) >> 1;  (* Temp sum before shifting is 9 bits *)

(* Repeat operation performed for bytes 2 through 6 *)

DEST[63:56] ← (SRC[63:56] + DEST[63:56] + 1) >> 1;

PAVGW

格式:PAVGW mm1, mm2/m64

将mm1与mm2/m64中对应的数据元素,即组合的无符号单字整型数,相加除以2,求平均数,使用四舍五入。

指令操作:

DEST[15:0] <--(SRC[15:0] + DEST[15:0] + 1) >> 1; (* Temp sum before shifting is 17 bits *)
(* Repeat operation performed for words 2 and 3 *)
DEST[63:48] <-- (SRC[63:48] + DEST[63:48] + 1) >> 1;

PEXTRW

格式:PEXTRW reg, mm, imm8

按照imm8中指定的位置索引,从mm寄存器中选取一个16位单字整型数,保存到reg寄存器的第0~15比特位中,其余的比特位清0。

PINSRW

格式:PINSRW mm, r32/m16, imm8

将r32/m16中的16位单字整型数,按照imm8中指示的位置,插入到mm寄存器中,其余的比特位保持不变。

PMAXUB

格式:PMAXUB mm1, mm2/m64

比较mm1与mm2/m64中组合的无符号字节整型数,将较大者保存到目标寄存器mm1中。

PMINUB

格式:PMINUB mm1, mm2/m64

比较mm1与mm2/m64中组合的无符号字节整型数,将较小者保存到目标寄存器mm1中。

PMAXSW

格式:PMAXSW mm1, mm2/m64

比较mm1与mm2/m64中组合的有符号单字整型数,将较大者保存到目标寄存器mm1中。

PMINSW

格式:PMINSW mm1, mm2/m64

比较mm1与mm2/m64中组合的有符号单字整型数,将较小者保存到目标寄存器mm1中。

PMOVMSKB

格式:PMOVMSKB reg, mm

将mm寄存器中组合的字节整型数的最高比特位(可以看作有符号数的符号位)按顺序保存到reg中,其余的比特位清0。

指令操作:

r32[0] <-- SRC[7];
r32[1] <-- SRC[15];
(* Repeat operation for bytes 2 through 6 *)
r32[7] <-- SRC[63];
r32[31:8] <--  ZERO_FILL;

PMULHUW

格式:PMULHUW mm1, mm2/m64

将mm1与mm2/m64中对应的组合的数据元素,即无符号单字整型数,相乘,结果的高16比特位保存到mm1中。

指令操作:

TEMP0[31:0] ← DEST[15:0] ∗ SRC[15:0]; (* 无符号乘法,中间结果*)

TEMP1[31:0] ← DEST[31:16] ∗ SRC[31:16];

TEMP2[31:0] ← DEST[47:32] ∗ SRC[47:32];

TEMP3[31:0] ← DEST[63:48] ∗ SRC[63:48];

DEST[15:0] ← TEMP0[31:16]; (结果的高16比特位,下同)

DEST[31:16] ← TEMP1[31:16];

DEST[47:32] ← TEMP2[31:16];

DEST[63:48] ← TEMP3[31:16];

PSADBW

格式:PSABDW mm1, mm2/m64

首先计算mm1与mm2/m64中对应的组合的数据元素,即无符号字节整型数,的差的绝对值,然后再将这些绝对值相加,保存到mm1中的第0~15比特位中,其余的比特位清0(参看下图)。

PSHUFW

格式:PSHUFW mm1, mm2/m64, imm8

按照imm8指示的位置,将mm2/m64中的单字数据元素混洗,结果保存到mm1中。

指令操作:

DEST[15:0] <-- (SRC >> (ORDER[1:0] * 16))[15:0];
DEST[31:16] <-- (SRC >> (ORDER[3:2] * 16))[15:0];
DEST[47:32] <-- (SRC >> (ORDER[5:4] * 16))[15:0];
DEST[63:48] <-- (SRC >> (ORDER[7:6] * 16))[15:0];

Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(9) - 64位整型指令(MMX指令集扩展)相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  2. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令

    SSE Instruction Set SSE指令集大致可以分为4个功能组: 组合的与标量的单精度浮点指令 数据传输指令 算术指令 逻辑指令 比较指令 混洗shuffle指令 转换指令 64位SIMD ...

  3. vc6 C/C++的64位整型

    :C/C++的64位整型 在C/C++中,64为整型一直是一种没有确定规范的数据类型.现今主流的编译器中,对64为整型的支持也是标准不一,形态各异.一般来说,64位 整型的定义方式有long long ...

  4. C/C++的64位整型

    在C/C++中,64为整型一直是一种没有确定规范的数据类型.现今主流的编译器中,对64为整型的支持也是标准不一,形态各异.一般来说,64位整型的定义方式有long long和__int64两种(VC还 ...

  5. MongoDB中关于64位整型存储解决方案

    为什么80%的码农都做不了架构师?>>>    社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...

  6. 【转】C/C++的64位整型 不同编译器间的比较

    /为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数   //结果VC中还是认为是32位的,显然不合适   //typedef signed long int ...

  7. 整理C/C++中的64位整型

    本篇文章转载自:VC驿站:http://www.cctry.com/thread-277221-1-1.html 最近给大家录制讲解C++基础方面的教程,刚讲到数据类型这块.地址如下:http://w ...

  8. IEEE754:将单精度浮点数的IEEE754格式转换成32位整型

    ieee754,要求如下, 定义函数 int my_int_float() 从键盘输入一个单精度浮点数的字符串,然后自己解析该字符串,并用位操作把对应的值按754格式保存到4字节里,最后返回该四字节对 ...

  9. C/C++的64位整型 zz

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int TS ...

最新文章

  1. 不仅仅是写代码,而是完成作品
  2. ​新型支架状电极允许人类思想操作计算机
  3. 剑指offer:求1+2+3+...+n
  4. MyBatis 源码分析-技术分享
  5. html把实线变成虚线,Html5 Canvas 绘制虚线和实线的切换方法
  6. IE9 Preview 4的CSS3支持。
  7. LeetCode MySQL 1142. 过去30天的用户活动 II
  8. linux resin 服务功能,linux服务之resin
  9. c语言将pwd结果赋给变量,《网络系统管理linux实训》全套PPT电子课件教案-第4章 shell编程.ppt...
  10. 【Vegas原创】SQL Server 2005部署备份任务
  11. 使用python实现栈和队列
  12. linux安装mysql5.6rpm_centos6.5 下安装mysql5.6,rpm方式
  13. zxr10交换机配置手册vlan_中兴交换机配置命令
  14. 小米mix2安兔兔html5跑分,vivo X21跑分多少?高通骁龙660 AIE安兔兔跑分实测
  15. 射频信号处理知识点点滴滴
  16. 百度“有啊”困局之源:流量到交易的转化
  17. 基于ResNetRS的宝可梦图像识别
  18. 免费领取三个月苹果ARCADE订阅教程
  19. php虚拟电话号码,虚拟号码能挡住骚扰电话垃圾短信?
  20. html鼠标拖尾效果,javascript canvas拖尾效果

热门文章

  1. git 上传项目到linux仓库_总结:上传python项目至git上前的一些准备工作
  2. 问题解决:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date
  3. ES6_有关数组的函数_note
  4. mysql执行sql流程_MySQL架构与SQL执行流程
  5. php smtp邮件类,php利用smtp类发送邮件
  6. Excel的导入与导出
  7. python语言如何软件搬家_python写程序-就像搬家把物品分类放在箱子里
  8. 16_python基础—面向对象基础
  9. mysql 用户划表_mysql用户表
  10. 腾讯云linux服务器怎么使用图形化界面_winscp使用方法,winscp使用方法详细说明...