如何访问 NEON 指令中的完整 128 位?

How to access full 128 bits in NEON instructions?

我最近写了一个程序,用 Arm64 汇编做一些浮点计算。 由于我处理的数字可能变得非常小,我现在想优化代码,以便它使用尽可能高的精度。

我发现 NEON 引擎有 128 位浮点寄存器,而不是我目前使用的 64 位,所以我搜索了一种使用它们进行计算的方法。我看过的每个网站都告诉我这应该是可能的,但是当我尝试做类似

的事情时

fmul v0, v1, v2

我刚收到“错误:指令操作数无效”。

我正在使用应该能够使用 NEON 指令的 M1 芯片,当我将其更改为

fmul v0.2d, v1.2d, v2.2d

完全没有问题。

有人知道我做错了什么吗?还是不可能一次使用这些寄存器的所有 128 位?

你不能。

没错,NEON 寄存器是 128 位宽,但最大数据类型宽度是 64。

据我所知,没有任何消费者架构能够处理任何 128 位数据类型。

PS : 是否有 quad 数据类型开头?我很好奇。