我正在将一些代码从rust移植到swift,我注意到他们使用pext方法进行一些位操作。由于这是一条英特尔指令,我无法将其输入到swift代码中,所以我想知道哪一组按位指令(我可以在swift中使用)能够获得与PEXT操作相同的结果。
有关更多上下文,请参见PEXT
基本上,它使用一个掩码,将高阶位映射到连续的低阶位,并在最终输出中清除高阶位。例子:

source = 1011 1110 1001 0011
mask =   0110 0011 1000 0101

s = pext(source, mask)

s -> 0000 0000 0011 0101

我知道复制高级指令会影响性能,但我只是想让代码正常工作。

最佳答案

@L_uv_nhph_c的答案是正确的。但在非英特尔体系结构上效率非常低,所以我建议其他希望将bmi2指令合并到swift代码中的人在针对macos时才这样做。

关于swift - 如何使用基本的按位运算复制PEXT(并行位提取)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48394866/

10-11 16:41