簡體   English   中英

AVX-512 中的壓縮和擴展指令有什么區別?

[英]What are the differences between the compress and expand instructions in AVX-512?

我正在研究Intel 內在指南中的擴展和壓縮操作。 我對這兩個概念感到困惑:

對於__m128d _mm_mask_expand_pd (__m128d src, __mmask8 k, __m128d a) == vexpandpd

從 a(在掩碼 k 中設置相應位的元素)加載連續的活動雙精度(64 位)浮點元素,並使用 writemask k 將結果存儲在 dst 中(當相應的掩碼位為沒有設置)。

對於__m128d _mm_mask_compress_pd (__m128d src, __mmask8 k, __m128d a) == vcompresspd

將 a 中的活動雙精度(64 位)浮點元素(在 writemask k 中設置了相應位的元素)連續存儲到 dst,並從 src 傳遞剩余元素。

有沒有更清楚的描述或者誰能解釋更多?

這些指令實現了 APL 運算符\\ (展開)和/ (壓縮)。 展開需要的一些≥nn個設定的比特與n個數字,並返回的數組ωm個與來自ω插入的地方數的矢量表示由α,其余組零的位掩碼α。 例如,

0 1 1 0 1 0 \ 2 3 4

返回

0 2 3 0 4 0

_mm_mask_expand_pd指令為固定的m = 8 實現此運算符。

壓縮操作消除了擴展操作的影響,即它使用位掩碼 α 從 ω 中選擇條目並將這些條目連續存儲到內存中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM