VFP (Float) Instructions
43 ARM instructions in this extension - click any row for encoding, pseudocode, and full documentation.
| Mnemonic | Syntax | Format | Summary |
|---|---|---|---|
| vabs | VABS<c>.F64 <Dd>, <Dm> | VFP Unary | Absolute value of double-precision register. |
| vabs | VABS<c>.F32 <Sd>, <Sm> | VFP Unary | Calculates absolute value. |
| vadd | VADD<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Adds two floating-point values. |
| vadd | VADD<c>.F64 <Dd>, <Dn>, <Dm> | VFP Arith | Adds two double-precision floating-point values. |
| vcmp | VCMP<c>.F32 <Sd>, #0.0 | VFP Compare | Compares a floating-point value with #0.0. |
| vcmp | VCMP<c>.F64 <Dd>, <Dm> | VFP Compare | Compares two double-precision values. |
| vcmp | VCMP<c>.F32 <Sd>, <Sm> | VFP Compare | Compares two floating-point values. |
| vcmpe | VCMPE<c>.F32 <Sd>, <Sm> | VFP Compare | Compares values and raises exception on NaN. |
| vcvt | VCVT<c>.<Td>.<Tm> <Qd>, <Qm>, #<fbits> | VFP Convert | Converts between floating-point and fixed-point. |
| vcvt | VCVT<c>.<Td>.<Tm> <Sd>, <Sm> | VFP Convert | Converts float to signed/unsigned integer. |
| vcvta | VCVTA<c>.<dt>.F64 <Sd>, <Dm> | VFP Convert | Converts double to integer, rounding to nearest. |
| vcvtn | VCVTN<c>.<dt>.F64 <Sd>, <Dm> | VFP Convert | Converts double to integer, rounding to nearest even. |
| vdiv | VDIV<c>.F64 <Dd>, <Dn>, <Dm> | VFP Arith | Divides two double-precision registers. |
| vdiv | VDIV<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Divides two floating-point values. |
| vldm | VLDM<c><mode> <Rn>{!}, <list> | VFP Load Multiple | Loads multiple VFP registers from memory. |
| vldr | VLDR<c> <Sd>, [<Rn>, #+/-<imm>] | VFP Load | Loads a floating-point register from memory. |
| vmaxnm | VMAXNM<c>.F64 <Dd>, <Dn>, <Dm> | VFP Misc | Returns larger double-precision value, handling NaNs. |
| vminnm | VMINNM<c>.F64 <Dd>, <Dn>, <Dm> | VFP Misc | Returns smaller double-precision value, handling NaNs. |
| vmla | VMLA<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Sd = Sd + (Sn * Sm). |
| vmls | VMLS<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Sd = Sd - (Sn * Sm). |
| vmov | VMOV<c>.F64 <Dd>, <Dm> | VFP Move | Moves data between Double registers. |
| vmov | VMOV<c> <Rt>, <Rt2>, <Dm> | VFP Transfer | Moves a Double register to/from two Core registers. |
| vmov | VMOV<c>.F32 <Sd>, <Sm> | VFP Move | Moves data between VFP registers. |
| vmov | VMOV<c> <Sn>, <Rt> | VFP Transfer | Moves data between Core registers (R) and VFP registers (S). |
| vmul | VMUL<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Multiplies two floating-point values. |
| vneg | VNEG<c>.F64 <Dd>, <Dm> | VFP Unary | Negates double-precision register. |
| vneg | VNEG<c>.F32 <Sd>, <Sm> | VFP Unary | Negates the value. |
| vnmul | VNMUL<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Sd = -(Sn * Sm). |
| vpop | VPOP <list> | VFP Load Multiple | Pops VFP registers from the stack (Alias for VLDMIA SP!). |
| vpush | VPUSH <list> | VFP Store Multiple | Pushes VFP registers to the stack (Alias for VSTMDB SP!). |
| vrintm | VRINTM<c>.F32 <Sd>, <Sm> | VFP Unary | Rounds float towards Minus Infinity (Floor). |
| vrintm | VRINTM<c>.F64 <Dd>, <Dm> | VFP Unary | Rounds double towards Minus Infinity (Floor). |
| vrintp | VRINTP<c>.F32 <Sd>, <Sm> | VFP Unary | Rounds float towards Plus Infinity (Ceil). |
| vrintp | VRINTP<c>.F64 <Dd>, <Dm> | VFP Unary | Rounds double towards Plus Infinity (Ceil). |
| vrintr | VRINTR<c>.F32 <Sd>, <Sm> | VFP Unary | Rounds float to integral float using FPSCR rounding mode. |
| vrintx | VRINTX<c>.F32 <Sd>, <Sm> | VFP Unary | Rounds float to integral float, raising Inexact exception. |
| vsel | VSEL<cond>.F32 <Sd>, <Sn>, <Sm> | VFP Misc | Selects elements from Dn or Dm based on condition flags (predicated VFP). |
| vsel | VSEL<cond>.F64 <Dd>, <Dn>, <Dm> | VFP Misc | Selects between two double-precision registers based on flags. |
| vsqrt | VSQRT<c>.F64 <Dd>, <Dm> | VFP Unary | Square root of double-precision register. |
| vsqrt | VSQRT<c>.F32 <Sd>, <Sm> | VFP Unary | Calculates square root. |
| vstm | VSTM<c><mode> <Rn>{!}, <list> | VFP Store Multiple | Stores multiple VFP registers to memory. |
| vstr | VSTR<c> <Sd>, [<Rn>, #+/-<imm>] | VFP Store | Stores a floating-point register to memory. |
| vsub | VSUB<c>.F32 <Sd>, <Sn>, <Sm> | VFP Arith | Subtracts two floating-point values. |