VFP instruction summary

Table 15 shows a summary of VFP instructions.

Table 15. Location of VFP instructions

MnemonicBrief descriptionSeeOp.Arch.
VABSAbsolute valueVABS, VNEG, and VSQRTVectorAll
VADDAddVADD, VSUB, and VDIVVectorAll
VCMPCompareVCMPScalarAll
VCVTConvert between single-precision and double-precisionVCVT (between single-precision and double-precision)ScalarAll
 Convert between floating-point and integerVCVT (between floating-point and integer)ScalarAll
 Convert between floating-point and fixed-pointVCVT (between floating-point and fixed-point)ScalarVFPv3
VCVTB, VCVTTConvert between half-precision and single-precision floating-pointVCVTB, VCVTT (half-precision extension)ScalarHalf- precision
VDIVDivideVADD, VSUB, and VDIVVectorAll
VFMA, VFMSFused multiply accumulate, Fused multiply subtractVFMA, VFMS, VFNMA, VFNMSScalarVFPv4
VFNMA, VFNMSFused multiply accumulate with negation, Fused multiply subtract with negationVFMA, VFMS, VFNMA, VFNMSScalarVFPv4
VLDMLoad multipleVLDM, VSTM, VPOP, and VPUSH-All
VLDRLoad (see also VLDR pseudo-instruction)VLDR and VSTRScalarAll
Load (post-increment and pre-decrement)VLDR and VSTR (post-increment and pre-decrement)ScalarAll
VMLAMultiply accumulateVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VMLSMultiply subtractVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VMOVTransfer from two ARM registers to a doubleword registerVMOV (between two ARM registers and an extension register)ScalarVFPv2
Transfer from a doubleword register to two ARM registersVMOV (between two ARM registers and an extension register)ScalarVFPv2
Transfer from single-precision to ARM registerVMOV (between one ARM register and single precision VFP)ScalarAll
Transfer from ARM register to single-precisionVMOV (between one ARM register and single precision VFP)ScalarAll
Insert floating-point immediate in single-precision or double-precision registerVMOVScalarVFPv3
VMRSTransfer from VFP system register to ARM registerVMRS and VMSR-All
VMSRTransfer from ARM register to VFP system registerVMRS and VMSR-All
VMULMultiplyVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VNEGNegateVABS, VNEG, and VSQRTVectorAll
VNMLANegated multiply accumulateVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VNMLSNegated multiply subtractVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VNMULNegated multiplyVMUL, VMLA, VMLS, VNMUL, VNMLA, and VNMLSVectorAll
VPOPPop VFP registers from full-descending stackVLDM, VSTM, VPOP, and VPUSH-All
VPUSHPush VFP registers to full-descending stackVLDM, VSTM, VPOP, and VPUSH-All
VSQRTSquare RootVABS, VNEG, and VSQRTVectorAll
VSTMStore multipleVLDM, VSTM, VPOP, and VPUSH-All
VSTRStoreVLDR and VSTRScalarAll
Store (post-increment and pre-decrement)VLDR and VSTR (post-increment and pre-decrement)ScalarAll
VSUBSubtractVADD, VSUB, and VDIVVectorAll

Copyright © 2011-2012 ARM. All rights reserved.ARM DUI 0588B
Non-ConfidentialID062912