我正在用 Golang 编写一个汇编函数。为了简化让我们假设我想做以下功能:
func sseSumOfMinimums (d1, d2 [2]float64) float64
它将计算 d1[0]、d2[0] 的最小值以及 d1[1] 和 d2[1] 的最小值并计算总和
在装配中我做:
TEXT ·sseSum(SB), $0-40
MOVUPD d1+0(FP), X0 // loading d1 to X0
MOVUPD d2+16(FP), X1 // loading d1 to X1
MINPD X0, X1 // compute pair minimums and store to X1
MOVSD X1, X2 // move first min to X2
// How do I move second float of X1 to X3?
ADDSD X2, X3
MOVSD X3, ret+32(FP)
我缺少的部分是如何将第二个标量从 X1 提取到 X3