【问题标题】:How to replicate PEXT (parallel bit extract) with basic bitwise ops?如何使用基本的按位操作复制 PEXT(并行位提取)?
【发布时间】:2018-01-23 05:34:24
【问题描述】:

我正在将一些代码从 Rust 移植到 Swift,我注意到他们使用 pext 方法进行一些位操作。由于这是一条 Intel 指令,我无法将其放入我的 Swift 代码中,所以我想知道哪一组位指令(我可以在 Swift 中使用)能够获得与 PEXT 操作相同的结果。

更多上下文,这里是PEXT的描述

基本上,它使用掩码将高位映射到连续的低位,并清除最终输出中的高位。示例:

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

s = pext(source, mask)

s -> 0000 0000 0011 0101 

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

【问题讨论】:

标签: swift bit-manipulation intel bitwise-operators


【解决方案1】:

@LưuVĩnhPhúc 的回答是正确的。虽然它在非英特尔架构上效率非常低,所以我建议其他希望将 BMI2 指令合并到 Swift 代码中的人只在针对 macOS 时这样做

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2014-12-04
    相关资源
    最近更新 更多