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