Neon 64 位 aarch64:关于 ld4r 的困惑

Neon 64bit aarch64: confusion about ld4r

我对 aarch64 中新的 ld4r 指令感到困惑。

以下代码(将 SAME 4 个 32 位值加载到 v[20-23] 中):

ld1 { v20.4s }, [out1]
ld1 { v21.4s }, [out1]
ld1 { v22.4s }, [out1]
ld1 { v23.4s }, [out1]

似乎等价于下面的代码:

ld1 { v20.4s }, [out1]
mov v21.16b, v20.16b
mov v22.16b, v20.16b
mov v23.16b, v20.16b

但它似乎并不等同于以下行:

ld4r { v20.4s, v21.4s, v22.4s, v23.4s }, [out1]

我是否误读了 ld4r 指令?它不是应该复制超过 4 个通道吗?

ld4r 似乎只加载了一个 4 元素结构,并在同一通道中复制了它。这不是车道到车道的复制。