ARM LLVM汇编中的Q和V寄存器

3
在由Xcode生成的以下代码中,您可以看到在前两行中将值加载到q0q1寄存器中,但是从v0v1寄存器中使用,为什么不使用q0q1而是v0v1呢? v0v1是否是q0q1的别名(来源:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0024a/ch04s06s02.html)?
0x100005db0 <+548>:  ldr    q0, [x9, x12]
0x100005db4 <+552>:  ldr    q1, [x10, x12]
0x100005db8 <+556>:  cmeq.4s v2, v0, v4
0x100005dbc <+560>:  bsl.16b v2, v1, v0
1个回答

5
名称“v0”和“q0”指的是同一个寄存器。不同之处在于如何解释寄存器内容:名称“q0”表示将寄存器解释为单个128位数量,而名称“v0”表示将寄存器解释为某种向量。向量元素的类型由指令助记符后缀指示。在您的情况下,“.4s”表示四个32字(32个位数量)的向量,而“.16b”表示16个八位(8个位数量)的向量。此表示法的具体细节已在您已链接的文档中解释。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接