ARMv8 NEON寄存器
在看OPENBLAS源码时,看了它的kernel汇编代码,在代码中出现了一个寄存器的表达形式:V0.4S,而且只有对其的使用,没有对其的赋值,在此之前只有对Q寄存器的赋值,怀疑这两个寄存器结构应该有包含关系。
找了一些资料,才发现这个叫做NEON寄存器,且对于ARMv7和ARMv8两种有不同的形式。
具体参考:
https://blog.csdn.net/SoaringLee_fighting/article/details/82800919
也可以直接查看ARM的manual:
https://developer.arm.com/docs/den0024/latest/armv8-registers/neon-and-floating-point-registers/floating-point-register-organization-in-aarch64
| Name | Shape |
|---|---|
| Vn.8B | 8 lanes, each containing an 8-bit element |
| Vn.16B | 16 lanes, each containing an 8-bit element |
| Vn.4H | 4 lanes, each containing a 16-bit element |
| Vn.8H | 8 lanes, each containing a 16-bit element |
| Vn.2S | 2 lanes, each containing a 32-bit element |
| Vn.4S | 4 lanes, each containing a 32-bit element |
| Vn.1D | 1 lane containing a 64-bit element |
| Vn.2D | 2 lanes, each containing a 64-bit element |