FPU Programmer’s Model
ARM DDI 0363E Copyright ©2009 ARM Limited. All rights reserved. 12-2
ID013010 Non-Confidential, Unrestricted Access
12.1 About the FPU programmer’s model
The FPU implements the VFPv3-D16 architecture and the Common VFP Sub-Architecture v2.
This includes the instruction set of the VFPv3 architecture. See the ARM Architecture Reference
Manual for information on the VFPv3 instruction set.
12.1.1 FPU functionality
The FPU is an implementation of the ARM Vector Floating Point v3 architecture, with 16
double-precision registers (VFPv3-D16). It provides floating-point computation functionality
that is compliant with the ANSI/IEEE Std 754-1985, IEEE Standard for Binary Floating-Point
Arithmetic, referred to as the IEEE 754 standard. The FPU supports all data-processing
instructions and data types in the VFPv3 architecture as described in the ARM Architecture
Reference Manual.
The FPU fully supports single-precision and double-precision add, subtract, multiply, divide,
multiply and accumulate, and square root operations. It also provides conversions between
fixed-point and floating-point data formats, and floating-point constant instructions. The FPU
does not support any data processing operations on vectors in hardware. Any data processing
instruction that operates on a vector generates an UNDEFINED exception. The operation can
then be emulated in software if necessary.
12.1.2 About the VFPv3-D16 architecture
The VFPv3-D16 architecture only includes 16 double-precision registers. VFPv3 includes 32
double-precision registers by default. An instruction which attempts to access any of the
registers D16-D31 generates an UNDEFINED exception.