ARMv8 下的汇编指令

ARMv8 推出了新的 A64 指令集,A64 中也包含 SIMD 向量运算指令,执行在 AArch64 模式下。
ARM 的高级 SIMD 架构通常又称为 Neon 技术。

寄存器

32 个 SIMD&FP 寄存器,V0 - V31, 每个寄存器可以以如下格式引用

  • Q0 - Q31, 128 bits 寄存器
  • D0 - D31, 64 bits 寄存器
  • S0 - S31z, 32 bits 寄存器
  • H0 - H31, 16 bits 寄存器
  • B0 - B31, 8 bits 寄存器

组织结构如下

aarch64_register

向量格式

SIMD&FP 寄存器可以加载,读取并处理以下三种格式的数据

  • 在寄存器低位,单个的标量元素
  • 64 bits 长度的向量,包含半字,字,双字长度的元素
  • 128 bits 长度的向量,包含半字,字,双字长度的元素

元素大小

B H S D
8 bits 16 bits 32 bits 64 bits
  • 对于 128 bits 寄存器
    Vn.{2D, 4S, 8H, 16B}
    aarch64_128bits_vector
  • 对于 64 bits 寄存器
    Vn.{1D, 2S, 4H, 8B}
    aarch64_64bits_vector