日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIMD(MMX/SSE/AVX)变量命名规范心得

發布時間:2025/7/25 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIMD(MMX/SSE/AVX)变量命名规范心得 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【轉載】:SIMD(MMX/SSE/AVX)變量命名規范心得
當使用Intrinsics函數來操作SIMD指令集(MMX/SSE/AVX等)時,會面對不同長度的SIMD數據類型,其中又分為多種緊縮格式。為此,我設計了一套SIMD變量命名規范,可以有效的提高代碼的可讀性。

1SIMD數據類型簡介

  SIMD數據類型有:
__m64???
64位緊縮整數(MMX)。
__m128??
128位緊縮單精度(SSE)。
__m128d?
128位緊縮雙精度(SSE2)。
__m128i??
128位緊縮整數(SSE2)。
__m256??
256位緊縮單精度(AVX)。
__m256d?
256位緊縮雙精度(AVX)。
__m256i??
256位緊縮整數(AVX)。

?注:緊縮整數包括了8位、16位、32位、64位的帶符號和無符號整數。

   這些數據類型與寄存器的對應關系為:
64??
MM寄存器?MM0~MM7? ? ??__m64
128
SSE寄存器(XMM0~XMM15):__m128__m128d__m128i
256
AVX寄存器(YMM0~YMM15):__m256__m256d__m256i


? ? ?SIMD 數據類型關鍵字:

? ? ?p ?:?緊密,指令對寄存器中的每個元素進行運算

? ep : 擴充緊密

? ?s :標量,只將寄存器中的第一個元素參與運算?

2SIMD變量命名規范

  參考匈牙利命名法(Hungarian notation),在變量名前面增加類型前綴。
  類型前綴為3個小寫字母,首字母代表寄存器寬度,最后兩個字母代表緊縮數據類型。

  寄存器寬度(首字母)——
? ? ? m
?64MM寄存器。?對應?__m64
? ? ? x
128SSE寄存器。對應?__m128__m128d__m128i
? ? ? y
256AVX寄存器。對應?__m256__m256d__m256i

  ?緊縮數據類型(兩個字母)——
? ? ?mb
8位數據。用于只知道長度、不知道具體緊縮格式時。(bByte
? ? ?mw
16位數據。(wWord
? ? ?md
32位數據。(dDoubleWord
? ? ?mq
64位數據。(qQuadWord
? ? ?mo
128位數據。(oOctaWord
? ? ?mh
256位數據。(hHexWord
? ? ?ub / uw / ud / uq
8?/ 16?/ 32?/ 64?無符號整數
? ? ?ib / iw / id / iq???
8?/ 16?/ 32?/ 64?帶符號整數
? ? ?fh
16位浮點數,即半精度浮點數。(hHalf
? ? ?fs
32位浮點數,即單精度浮點數。(sSingle
? ? ?fd
64位浮點數,即雙精度浮點數。(ddouble

? ? 例如?——
? ? mub
64位緊縮字節(64MMX寄存器,其中存放了88位無符號整數)。
? ? xfs
128位緊縮單精度(128SSE寄存器,其中存放了4個單精度浮點數)。
? ? xid
128位緊縮帶符號字(128SSE寄存器,其中存放了432位帶符號整數)。
? ? yfd
256位緊縮雙精度(256AVX寄存器,其中存放了4個雙精度浮點數)。
? ? yfh
256位緊縮半精度(256AVX寄存器,其中存放了16個半精度浮點數)。

?3、示例代碼
? ??SSE累加求和程序?
? ?

? ??此處再給出了第二種寫法:
? ??測試上面的函數: ? ?
? ??上述測試代碼中的?__declspec(align(16))?主要是為了讓數據?a?的地址是16字節對齊。否則的話?_mm_load_si128?會報錯。也可以將函數_mm_load_si128?改為?_mm_loadu_si128,這樣就不需要將數組進行16字節對齊,也可以獲得正確結果,但是效率可能會低一些。

總結

以上是生活随笔為你收集整理的SIMD(MMX/SSE/AVX)变量命名规范心得的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。