Mar*_*Zzz 6 x86 bit-manipulation simd intrinsics avx
如标题所示,如果256位SIMD寄存器是:
0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 |
我怎样才能最有效地获得第一个非零元素(即该指数的指数2第一的1)?最直接的方法是将其存储到内存中并逐个检查,但这可能会花费很多.有没有可爱的想法呢?
Pet*_*des 10
~运算符,asm NOT指令)反转为在位图中获得非零元素的1如果只有一个可能的非零值,PCMPEQ对应的向量,那么您以后不需要反转它.
如果是这种情况,请考虑首先将数据存储在位图中,以将缓存占用空间减少8倍.然后,您只需要TZCNT数组的64位块.
哎呀,刚刚注意到了内在标签.asm指令参考手册列出了每个条目底部的相关C内在函数,您可以通过asm助记符搜索英特尔的内在函数查找器.(有关链接,请参阅x86标记wiki).