[英]What is the right way to emit masked vmovapd (AVX-512) instructions using ASM?
[英]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 運算符\\
(展開)和/
(壓縮)。 展開需要的一些米≥n的n個設定的比特與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.