标题:
GCC中SIMD指令的应用方法--X86的SIMD指令
[打印本页]
作者:
look_w
时间:
2018-5-9 19:58
标题:
GCC中SIMD指令的应用方法--X86的SIMD指令
IA-32 Intel体系结构的指令主要分为以下几类 :
通用
x87 FPU
MMX技术
SSE/SSE2/SSE3扩展
MMX/SSE类扩展引入了SIMD(单指令多数据)的执行模式,可用于加速多媒体应用。 下面简要介绍一下这些指令的执行环境和特征。
8个32位通用寄存器可为各个SIMD扩展所使用;
MMX:8个64位MMX寄存器(mm0 - mm7),也可为各SSE扩展所使用;
数据为整数,最多支持两个32位
运算中没有寄存器能够进行溢出指示
SSE:8个128位xmm寄存器,MXSCR寄存器,EFLAGS寄存器
支持单精度浮点
MXSCR含有rounding, overflow标志
支持64位SIMD整数
SSE2:执行环境同sse
双精度浮点
128位整数
双—单精度转换
SSE3:与Inte Prescott处理器一同发布不久,共13条指令
主要增强了视频解码、3D图形优化和超线程性能
MMX技术出现最早,目前几乎所有的X86处理器都提供支持,包括嵌入式X86, 所以下面的讨论主要基于MMX,但方法完全适用于SSEn, 包括像AMD的3D Now等其它SIMD扩展。
MMX指令又分为以下几种:
数据传送:movd, movq
数据转换:packsswb, packssdw, packuswb, punpckhbw, punpckhwd, punpckhdq, punpcklbw, punpcklwd, punpckldq
并行算术:paddb, paddw, paddd, paddsb, paddsw, paddusb, paddusw, psubb, psubw, psubd, psubsb, psubsw, psubusb, psubusb, psubusw, pmulhw, pmullw, pmaddwd
并行比较:pcmpeqb, pcmpeqw, pcmpeqd, pcmpgtb, pcmpgtw, pcmpgtd
并行逻辑:pand, pandn, por, pxor
移位与旋转:psllw, pslld, psllq, psrlw, psrld, psrlq, psraw, psrad
状态管理:emms
这些指令除了需要注意功能外,还需要注意处理的数据类型。以上内容为背景介绍,细节请参考手册。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0