movemask指令使用__m256i并返回int32,其中每個位(前4位,8位或全部32位,取決于輸入矢量元素的類型)是相應矢量元素的最高有效位。我想反過來:取一個32(只有4、8或32個最低有效位才有意義),然后得到一個__m256i,其中每個int8,int32或int64大小的塊的最高有效位都設(shè)置為原始一點。基本上,我想從壓縮的位掩碼轉(zhuǎn)換為可以被其他AVX2指令(例如maskstore,maskload,mask_gather)用作掩碼的位掩碼。我無法快速找到執(zhí)行該指令的指令,所以我在這里問。如果沒有一條指令具有該功能,那么您能想到一個巧妙的技巧可以通過很少的指令來實現(xiàn)這一目標嗎?我當前的方法是使用256個元素的查找表。我想在沒有太多其他事情發(fā)生的循環(huán)中使用此操作,以加快速度。注意,我對長的多指令序列或?qū)崿F(xiàn)此操作的小循環(huán)不太感興趣。
英特爾avx2中的movemask指令是否有反指令?
縹緲止盈
2019-12-06 10:40:30