Chapter 5. NEON 和 VFP 编程

本章提供有关用汇编语言对 NEON™ 和 VFP 协处理器进行编程的参考信息。 它包含以下几节:

有关个别指令的描述的位置,请参阅Table 5.1Table 5.2Table 5.3

Table 5.1. NEON 指令的位置 (续)

助记符 简单说明 页码
VABAVABD 差值绝对值,差值绝对值累加 VABA{L} 和 VABD{L}
VABS 绝对值 V{Q}ABS 和 V{Q}NEG
VACGEVACGT 绝对值比较大于或等于,绝对值比较大于 VACGE 和 VACGT
VACLEVACLT 绝对值比较小于或等于,绝对值比较小于(伪指令) VACLE 和 VACLT
VADD 加法 V{Q}ADD、VADDL、VADDW、V{Q}SUB、VSUBL 和 VSUBW
VADDHN 加法,选择高半部分 V{R}ADDHN 和 V{R}SUBHN
VAND 按位与 VAND、VBIC、VEOR、VORN 和 VORR(寄存器)
VAND 按位与(伪指令) VAND 和 VORN(立即数)
VBIC 按位位清除(寄存器) VAND、VBIC、VEOR、VORN 和 VORR(寄存器)
VBIC 按位位清除(立即数) VBIC 和 VORR(立即数)
VBIFVBITVBSL 为 False 时按位插入,为 True 时按位插入,按位选择 VBIF、VBIT 和 VBSL
VCEQVCLEVCLT 比较等于,比较小于或等于,比较小于 VCEQ、VCGE、VCGT、VCLE 和 VCLT
VCLEVCLT 比较小于或等于,比较小于(伪指令) VCLE 和 VCLT
VCLSVCLZVCNT 前导符号位计数,前导零计数和设置位计数 VCLS、VCLZ 和 VCNT
VCVT 将定点数或整数转换为浮点数,将浮点数转换为整数或定点数 VCVT
VDUP 将标量复制到向量的所有向量线 VDUP
VEXT 提取 VEXT
VCGEVCGT 比较大于或等于,比较大于 VCEQ、VCGE、VCGT、VCLE 和 VCLT
VEOR 按位异或 VAND、VBIC、VEOR、VORN 和 VORR(寄存器)
VHADDVHSUB 半加、半减 V{R}HADD 和 VHSUB
VMAXVMIN 最大值、最小值 VMAX、VMIN、VPMAX 和 VPMIN
VLD 向量加载 NEON 加载/存储元素和结构指令
VMLAVMLS 乘加,乘减(向量) VMUL{L}、VMLA{L} 和 VMLS{L}
VMLAVMLS 乘加,乘减(按标量) VMUL{L}、VMLA{L} 和 VMLS{L}(按标量)
VMOV 移动(立即数) VMOV、VMVN(立即数)
VMOV 移动(寄存器) VMOV、VMVN(寄存器)
VMOVLVMOV{U}N 长移,窄移(寄存器) VMOVL、V{Q}MOVN、VQMOVUN
VMUL 乘法(向量) VMUL{L}、VMLA{L} 和 VMLS{L}
VMUL 乘法(按标量) VMUL{L}、VMLA{L} 和 VMLS{L}(按标量)
VMVN 反移(立即数) VMOV、VMVN(立即数)
VNEG 求反 V{Q}ABS 和 V{Q}NEG
VORN 按位或非 VAND、VBIC、VEOR、VORN 和 VORR(寄存器)
VORN 按位或非(伪指令) VAND 和 VORN(立即数)
VORR 按位或(寄存器) VAND、VBIC、VEOR、VORN 和 VORR(寄存器)
VORR 按位或(立即数) VBIC 和 VORR(立即数)
VPADDVPADAL 按对加,按对加累加 VPADD{L}、VPADAL
VPMAXVPMIN 按对最大值,按对最小值 VMAX、VMIN、VPMAX 和 VPMIN
VQABS 绝对值,饱和 V{Q}ABS 和 V{Q}NEG
VQADD 加法,饱和 V{Q}ADD、VADDL、VADDW、V{Q}SUB、VSUBL 和 VSUBW
VQDMLALVQDMLSL 饱和加倍乘加以及饱和加倍乘减 VQDMULL、VQDMLAL 和 VQDMLSL(按向量或标量)
VQMOV{U}N 饱和移动(寄存器) VMOVL、V{Q}MOVN、VQMOVUN
VQDMUL 饱和加倍乘法 VQDMULL、VQDMLAL 和 VQDMLSL(按向量或标量)
VQDMULH

返回高半部分的饱和加倍乘法

VQ{R}DMULH(按向量或标量)
VQNEG 求反,饱和 V{Q}ABS 和 V{Q}NEG
VQRDMULH

返回高半部分的饱和加倍乘法

VQ{R}DMULH(按向量或标量)
VQRSHL 左移,舍入,饱和(按有符号变量) V{Q}{R}SHL(按有符号变量)
VQRSHR 右移,舍入,饱和(按立即数) VQ{R}SHR{U}N(按立即数)
VQSHL 左移,饱和(按立即数) VSHL、VQSHL、VQSHLU 和 VSHLL(按立即数)
VQSHL 左移,饱和(按有符号变量) V{Q}{R}SHL(按有符号变量)
VQSHR 右移,饱和(按立即数) VQ{R}SHR{U}N(按立即数)
VQSUB 减法,饱和 V{Q}ADD、VADDL、VADDW、V{Q}SUB、VSUBL 和 VSUBW
VRADDH 加法,选择高半部分,舍入 V{R}ADDHN 和 V{R}SUBHN
VRECPEVRECPS 近似倒数,倒数步进 VRECPE 和 VRSQRTE
VREV 反转元素 VREV
VRHADD 半加,舍入 V{R}HADD 和 VHSUB
VRSHRVRSRA 右移并舍入,右移、舍入并累加(按立即数) V{R}SHR{N}、V{R}SRA(按立即数)
VRSUBH 减法,选择高半部分,舍入 V{R}ADDHN 和 V{R}SUBHN
VRSQRTEVRSQRTS 近似平方根倒数,平方根倒数步进 VRECPS 和 VRSQRTS
VSHL 左移(按立即数) VSHL、VQSHL、VQSHLU 和 VSHLL(按立即数)
VSHR 右移(按立即数) V{R}SHR{N}、V{R}SRA(按立即数)
VSLI 左移并插入 VSLI 和 VSRI
VSRA 右移,累加(按立即数) V{R}SHR{N}、V{R}SRA(按立即数)
VSRI 右移并插入 VSLI 和 VSRI
VST 向量存储 NEON 加载/存储元素和结构指令
VSUB 减法 V{Q}ADD、VADDL、VADDW、V{Q}SUB、VSUBL 和 VSUBW
VSUBH 减法,选择高半部分 V{R}ADDHN 和 V{R}SUBHN
VSWP 交换向量 VSWP
VTBLVTBX 向量表查找 VTBL、VTBX
VTST 测试位 VTST
VTRN 向量转置 VTRN
VUZPVZIP 向量交叉存取和反向交叉存取 VUZP、VZIP

Table 5.2. 共享 NEON 和 VFP 指令的位置 

助记符 简单说明 页码 操作数 体系结构
VLDM 加载多个 VLDM、VSTM、VPOP 和 VPUSH - 全部
VLDR 加载(另请参阅VLDR 伪指令 VLDR 和 VSTR 标量 全部
VMOV 从一个 ARM® 寄存器传送到半个双精度寄存器 VMOV(在一个 ARM 寄存器和一个 NEON 标量之间) 标量 全部
  从两个 ARM 寄存器传送到双精度寄存器 VMOV(在两个 ARM 寄存器和一个扩展寄存器之间) 标量 VFPv2
  从半个双精度寄存器传送到 ARM 寄存器 VMOV(在一个 ARM 寄存器和一个 NEON 标量之间) 标量 全部
  从双精度寄存器传送到两个 ARM 寄存器 VMOV(在两个 ARM 寄存器和一个扩展寄存器之间) 标量 VFPv2
  从单精度寄存器传送到 ARM 寄存器 VMOV(在一个 ARM 寄存器和一个单精度 VFP 之间) 标量 全部
  从 ARM 寄存器传送到单精度寄存器 VMOV(在一个 ARM 寄存器和一个单精度 VFP 之间) 标量 全部
VMRS 从 NEON 和 VFP 系统寄存器传送到 ARM 寄存器 VMRS 和 VMSR - 全部
VMSR 从 ARM 寄存器传送到 NEON 和 VFP 系统寄存器 VMRS 和 VMSR - 全部
VSTM 存储多个 VLDM、VSTM、VPOP 和 VPUSH - 全部
VSTR 存储 VLDR 和 VSTR 标量 全部

Table 5.3. VFP 指令的位置 

助记符 简单说明 页码 操作数 体系结构
VABS 绝对值 VABS、VNEG 和 VSQRT 向量 全部
VADD 加法 VADD、VSUB 和 VDIV 向量 全部
VCMP 比较 VCMP 标量 全部
VCVT 在单精度数和双精度数之间转换 VCVT(在单精度数和双精度数之间) 标量 全部
  在浮点数和整数之间转换 VCVT(在浮点数和整数之间) 标量 全部
  在浮点数和定点数之间转换 VCVT(在浮点数和定点数之间) 标量 VFPv3
VDIV 除法 VADD、VSUB 和 VDIV 向量 全部
VMLA 乘加 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VMLS 乘减 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VMOV 将浮点常数插入单精度或双精度寄存器(另请参阅Table 5.2 VMOV 标量 VFPv3
VMUL 乘法 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VNEG 求反 VABS、VNEG 和 VSQRT 向量 全部
VNMLA 求反乘加 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VNMLS 求反乘减 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VNMUL 求反乘法 VMUL、VMLA、VMLS、VNMUL、VNMLA 和 VNMLS 向量 全部
VSQRT 平方根 VABS、VNEG 和 VSQRT 向量 全部
VSUB 减法 VADD、VSUB 和 VDIV 向量 全部
Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0204HC
Non-Confidential