gpt4 book ai didi

assembly - 浮点按位运算的用处

转载 作者:行者123 更新时间:2023-12-02 19:19:53 25 4
gpt4 key购买 nike

我注意到浮点存在 SSE 指令,这让我想知道。您可以对 fp/integer union 中的标量执行相同的操作。

我突然想到,如果对 float 组的各个分量进行按位或运算,则可以通过查看结果的符号位来快速确定它们中是否有任何一个为负。

浮点值的按位运算还有哪些其他用途?

最佳答案

很多。例如,当您只需要对像 AVX 这样的纯浮点指令集进行按位运算时,那么这些就变得非常方便。

另一个应用:制作常量。你可以在Agner Fog's optimization guide for x86 platforms表13.10和13.11中看到很多例子。 。一些例子:

pcmpeqd xmm0, xmm0
psrld xmm0, 30 ; 3 (32-bit)

pcmpeqd xmm0, xmm0 ; -1

pcmpeqw xmm0, xmm0 ; 1.5f
pslld xmm0, 24
psrld xmm0, 2

pcmpeqw xmm0, xmm0 ; -2.0f
pslld xmm0, 30

您还可以使用它来检查浮点值是否为 2 的幂。

像Harold这样的其他一些应用程序:取绝对值和负绝对值,复制符号,混合......我将在单个数据中演示以便于理解

// Absolute:
abs = x & ~(1U << 31);
// Muxing
v = (x & mask) | (y & ~mask); // v = mask ? x : y; with mask = 0 or -1
// Copy sign
y = (y & ~(1U << 31)) | (x & (1U << 31));

关于assembly - 浮点按位运算的用处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29195566/

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