9.33 --fpu=name

Specifies the target FPU architecture.

Syntax

--fpu=name
Where name is one of:
none
Selects no floating-point option. No floating-point code is to be used. This produces an error if your code contains floating-point instructions.
vfpv2
Selects a hardware floating-point unit conforming to architecture VFPv2.
vfpv3
Selects a hardware vector floating-point unit conforming to architecture VFPv3. VFPv3 is backwards compatible with VFPv2 except that VFPv3 cannot trap floating-point exceptions.
vfpv3_fp16
Selects a hardware vector floating-point unit conforming to architecture VFPv3 that also provides the half-precision extensions.
vfpv3_d16
Selects a hardware vector floating-point unit conforming to VFPv3-D16 architecture.
vfpv3_d16_fp16
Selects a hardware vector floating-point unit conforming to VFPv3-D16 architecture, that also provides the half-precision extensions.
vfpv4
Selects a hardware floating-point unit conforming to the VFPv4 architecture.
vfpv4_d16
Selects a hardware floating-point unit conforming to the VFPv4-D16 architecture.
fpv4-sp
Selects a hardware floating-point unit conforming to the single precision variant of the FPv4 architecture.
fpv5_d16
Selects a hardware floating-point unit conforming to the FPv5-D16 architecture.
fpv5-sp
Selects a hardware floating-point unit conforming to the single precision variant of the FPv5 architecture.
softvfp
Selects software floating-point support where floating-point operations are performed by a floating-point library, fplib. This is the default if you do not specify a --fpu option, or if you select a CPU that does not have an FPU.
softvfp+vfpv2
Selects a hardware floating-point unit conforming to VFPv2, with software floating-point linkage. Select this option if you are interworking Thumb code with ARM code on a system that implements a VFP unit.
softvfp+vfpv3
Selects a hardware vector floating-point unit conforming to VFPv3, with software floating-point linkage.
softvfp+vfpv3_fp16
Selects a hardware vector floating-point unit conforming to VFPv3-fp16, with software floating-point linkage.
softvfp+vfpv3_d16
Selects a hardware vector floating-point unit conforming to VFPv3-D16, with software floating-point linkage.
softvfp+vfpv3_d16_fp16
Selects a hardware vector floating-point unit conforming to VFPv3-D16-fp16, with software floating-point linkage.
softvfp+vfpv4
Selects a hardware floating-point unit conforming to FPv4, with software floating-point linkage.
softvfp+vfpv4_d16
Selects a hardware floating-point unit conforming to VFPv4-D16, with software floating-point linkage.
softvfp+fpv4-sp
Selects a hardware floating-point unit conforming to FPv4-SP, with software floating-point linkage.
softvfp+fpv5_d16
Selects a hardware floating-point unit conforming to FPv5-D16, with software floating-point linkage.
softvfp+fpv5-sp
Selects a hardware floating-point unit conforming to FPv5-SP, with software floating-point linkage.
To obtain a full list of FPU architectures use the --fpu=list option.

Usage

If you specify this option, it overrides any implicit FPU option that appears on the command line, for example, where you use the --cpu option.
Any FPU explicitly selected using the --fpu option always overrides any FPU implicitly selected using the --cpu option. For example, the option --cpu=ARM1136JF-S --fpu=softvfp generates code that uses the software floating-point library fplib, even though the choice of CPU implies the use of architecture VFPv2.
armasm sets a build attribute corresponding to name in the object file. The linker determines compatibility between object files, and selection of libraries, accordingly.
To control floating-point linkage without affecting the choice of FPU, you can use --apcs=/softfp or --apcs=/hardfp.

Restrictions

armasm only permits hardware VFP architectures, such as --fpu=vfpv3 or --fpu=softvfp+vfpv2, to be specified when MRRC and MCRR instructions are supported in the processor instruction set. MRRC and MCRR instructions are not supported in 4, 4T, 5T and 6-M. Therefore, armasm does not allow the use of these CPU architectures with hardware VFP architectures.
Other than this, armasm does not check that --cpu and --fpu combinations are valid. Beyond the scope of the assembler, additional architectural constraints apply. For example, VFPv3 is not supported with architectures prior to ARMv7. Therefore, the combination of --fpu and --cpu options permitted by armasm does not necessarily translate to the actual device in use.

Default

The default target FPU architecture is derived from use of the --cpu option.
If the CPU specified with --cpu has a VFP coprocessor, the default target FPU architecture is the VFP architecture for that CPU. For example, the option --cpu ARM1136JF-S implies the option --fpu vfpv2. If a VFP coprocessor is present, VFP instructions are generated.
Related reference
9.31 --fpmode=model
Non-ConfidentialPDF file icon PDF versionARM DUI0379G
Copyright © 2007, 2008, 2011, 2012, 2014, 2015 ARM. All rights reserved.