gpt4 book ai didi

assembly - avx sqrt的三个操作数?

转载 作者:行者123 更新时间:2023-12-04 16:28:38 28 4
gpt4 key购买 nike

为什么avx sqrt(非压缩)指令有三个操作数?

vsqrtsd xmm1, xmm2, xmm3

这是否意味着类似于 xmm1=xmm2=sqrt(xmm3)

编辑:下面的详细答案但总之流水线的意思是:

xmm1.low  = sqrt(xmm3.low);
xmm1.high = xmm2.high;

最佳答案

英特尔® 64 和 IA-32 架构软件开发人员手册,第 2B 卷,第 4-407 页,“SQRTSD — 计算标量 double 浮点的平方根-点值”:

VSQRTSD xmm1, xmm2, xmm3/m64

Computes square root of the low double-precision floating point value in xmm3/m64 and stores the results in xmm1*. Also, upper double precision floating-point value (bits[127:64]) from xmm2 is copied to xmm1[127:64].

Operation

DEST[63:0] ← SQRT(SRC2[63:0])
DEST[127:64] ← SRC1[127:64]
DEST[VLMAX-1:128] ← 0

该指令只是遵循其他 binary V___SDV___SS 操作的模式,例如 VSUBSD,它执行

DEST[63:0] ← SRC1[63:0] - SRC2[63:0]
DEST[127:64] ← SRC1[127:64]
DEST[VLMAX-1:128] ← 0

VRCPSS xmm1, xmm2, xmm3/32 一样,执行

DEST[31:0] ← APPROXIMATE(1/SRC2[31:0])
DEST[127:32] ← SRC1[127:32]
DEST[VLMAX-1:128] ← 0

一般形式是这样的

xmm1.low = f(xmm2.low, xmm3.low);
xmm1.high = xmm2.high,

英特尔® 64 和 IA-32 架构中所述软件开发人员手册,第 1 卷,第 11.4.1 节“打包和标量 double 浮点指令”。对于 VSQRTSD,我们只定义 f(x, y) = √y,忽略第一个操作数。


*:注意:英特尔手册在这里写“xmm2”,这是一个错误。

关于assembly - avx sqrt的三个操作数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10735652/

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