問題:
您想要最佳化演算法透過用內部__m256 變數取代浮點緩衝區[8] 來提高影像上的高斯模糊效果。
解決方案1:使用AVX2 的PMOVZX 和VCVTDQ2PS
這個方法利用PMOVZX 將8 位元字元擴展為32 位元整數,然後透過VCVTDQ2PS 將其轉換為32 位元整數浮點數值。具體來說:
VPMOVZXBD ymm0, [rsi] ; Byte to DWord VCVTDQ2PS ymm0, ymm0 ; convert to packed float
解決方案2:結合廣播載入和洗牌
此策略涉及執行128 位元廣播載入以產生64 位元洗牌控制向量對於vpshufb,允許零擴展和壓縮浮點轉換。它透過消除額外的隨機指令的需要來提供高吞吐量。
VPMOVSXBD xmm0, [rsi] ; Byte to DWord VPMOVSXBD xmm1, [rsi+4] VINSERTF128 ymm0, ymm0, xmm1, 1 VCVTDQ2PS ymm0, ymm0 ; convert to packed float.
解決方案3:處理AVX1 限制
在沒有AVX2 的情況下,以下步驟可以使用:
VPMOVZXBD xmm0, [rsi] VPMOVZXBD xmm1, [rsi+4] VINSERTF128 ymm0, ymm0, xmm1, 1 ; put the 2nd load of data into the high128 of ymm0 VCVTDQ2PS ymm0, ymm0 ; convert to packed float.
附加說明:
以上是如何將 8 個字元從記憶體載入到 __m256 變數中:三種有效方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!