英特尔avx2中的movemask指令是否有反指令?

movemask指令使用__m256i并返回int32,其中每个位(前4位,8位或全部32位,取决于输入矢量元素的类型)是相应矢量元素的最高有效位。

我想反过来:取一个32(只有4、8或32个最低有效位才有意义),然后得到一个__m256i,其中每个int8,int32或int64大小的块的最高有效位都设置为原始一点。

基本上,我想从压缩的位掩码转换为可以被其他AVX2指令(例如maskstore,maskload,mask_gather)用作掩码的位掩码。

我无法快速找到执行该指令的指令,所以我在这里问。如果没有一条指令具有该功能,那么您能想到一个巧妙的技巧可以通过很少的指令来实现这一目标吗?

我当前的方法是使用256个元素的查找表。我想在没有太多其他事情发生的循环中使用此操作,以加快速度。注意,我对长的多指令序列或实现此操作的小循环不太感兴趣。


开满天机
浏览 548回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python