gpt4 book ai didi

assembly - 将 xmm 寄存器折叠为标量

转载 作者:行者123 更新时间:2023-12-02 14:00:08 27 4
gpt4 key购买 nike

我需要能够采用 4 个压缩整数,并使用“或”运算将它们(一个在另一个之上)折叠成一个组合整数。

最有效的方法是什么?请注意,打包整数中的 1 永远不会有公共(public)位置,因此我认为无符号“add”也可以实现这一目的。

我看到了水平添加指令,但它是用于签名添加的。

最佳答案

评论中提到的 SSSE3 方式,使用 2 个 phaddd 会是这样的:

phaddd xmm0, xmm0
phaddd xmm0, xmm0

不幸的是,这不是很快,SB 上有 4 个周期,其他所有周期有 6 个周期(AMD 为 8 或 10 个周期)。

带有随机播放和普通添加的普通 SSE2 方式可能看起来像这样:(未测试)

pshufd xmm1, xmm0, 0x4E
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0xB1
paddd xmm0, xmm1

除 AMD 处理器外,这需要 4 个周期。缺点:代码较大,并且需要临时寄存器。

关于assembly - 将 xmm 寄存器折叠为标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29193885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com