首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

GCC中SIMD指令的应用方法--X86的SIMD指令

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
这些指令除了需要注意功能外,还需要注意处理的数据类型。以上内容为背景介绍,细节请参考手册。
返回列表