C++中使用SIMD的方法

一、參考資料

博客:https://blog.csdn.net/Mahfaeraak/article/details/88687252

1.SIMD(MMX/SSE/AVX)變量命名規範心得

2.SIMD指令集發展歷程表(MMX、SSE、AVX等)

3.Intrinsics頭文件與SIMD指令集、Visual Studio版本對應表

4.如何用gcc去編譯SIMD代碼

4.SSE指令集學習

5.SSE指令集相關

6.SSE4.1指令集系列之一

7.C/C++指令集介紹以及優化(主要針對SSE優化)

8.Inter指令集查詢:https://software.intel.com/sites/landingpage/IntrinsicsGuide

二、常用指令集

1.extern __m128i _mm_alignr_epi8 (__m128i a, __m128i b, int n);

操作:

t1[255:128] = a;
t1[127:0] = b;
t1[255:0] = t1[255:0] >> (8 * n); // unsigned shift
r[127:0] = t1[127:0];

三、頭文件

下面的頭文件是按照intel指令集的誕生時間進行排序:

// SSE
#include "xmmintrin.h"

// SSE2
#include "emmintrin.h"

// SSE3
#include "pmmintrin.h"

// SSSE3
#include "tmmintrin.h"

// SSE4.1
#include "smmintrin.h"

// SSE4.2
#include "nmmintrin.h"

// AVX、AVX2、FMA、AVX-512、KNC、SVML等
#include "immintrin.h"

 

發佈了61 篇原創文章 · 獲贊 61 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章