Follow Excellent, Success will Chase you

0%

X86平台下的SIMD运算

SSE的全称是 Sreaming SIMD Extensions, 它是一组Intel CPU指令,用于像信号处理、科学计算或者3D图形计算一样的应用。

1
2
3
4
#include <mmintrin.h>    //MMX  64bits
#include <xmmintrin.h> //SSE 128bits
#include <emmintrin.h> //SSE2
#include <immintrin.h> //AVX 256bits
  • immintrin.h: (Intel(R) AVX compiler intrinsics 256bit)
  • emmintrin.h: Principal header file for Intel(R) Pentium(R) 4 processor SSE2 intrinsics

XMM、SSE、AVX关系??

  • MMX是由英特尔开发的一种SIMD多媒体指令集,共有57条指令。
  • SSE(Sreaming SIMD Extensions)是继MMX的扩充指令集。SSE 指令集提供了 70 条新指令。
  • AVX(Advanced Vector Extensions) 是Intel的SSE延伸架构,如IA16至IA32般的把暂存器XMM 128bit提升至YMM 256bit,以增加一倍的运算效率。

数据类型

关键字说明备注
__m6464位紧缩整数(MMX)一个MMX寄存器,表示封装了8个8bit,4个16bit,2个32bit,1个64bit的整数
__m128128位紧缩单精度(SSE)封装4个32bit的单精度浮点数
__m128d128位紧缩双精度(SSE2)封装2个64bit的双精度浮点数
__m128i128位紧缩整数(SSE2)
__m256256位紧缩单精度(AVX)
__m256d256位紧缩双精度(AVX)
__m256i256位紧缩整数(AVX)

: 紧缩整数包括了8位、16位、32位、64位的带符号和无符号整数。

SSE指令集

指令函数

Intel intrinsic

操作码汇总表中的指令列

  • mm — An MMX register. The 64-bit MMX registers are: MM0 through MM7.
  • xmm — An XMM register. The 128-bit XMM registers are: XMM0 through XMM7; XMM8 through XMM15 are
    available using REX.R in 64-bit mode.
  • ymm — A YMM register. The 256-bit YMM registers are: YMM0 through YMM7; YMM8 through YMM15 are
    available in 64-bit mode.

参考

-------------本文结束感谢您的阅读-------------
  • 本文作者: Winddoing
  • 本文链接: https://winddoing.github.io/post/50180.html
  • 作者声明: 本博文为个人笔记, 由于个人能力有限,难免出现错误,欢迎大家批评指正。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!