x86_64 汇编中的 bt 指令是否有等效的 SIMD?

问题描述 投票:0回答:0

通过

bt
指令,我可以在一条指令中获取一个字节中第n位的值。将该操作转换为 SIMD 时,我目前将源字节、索引和
0x1
常量放入单独的寄存器中,并使用
vpsravd
后跟
andps
在每个通道中执行
(byte >> index) & 0x1
。有没有可以让我更快做到这一点的说明?

上下文示例:这是用于索引位集,即类似于(伪代码)

count = 0
for index in indices:
    count += (bitset[index >> 3] >> (index & 7)) & 1
assembly x86-64 simd
© www.soinside.com 2019 - 2024. All rights reserved.