FPU instructions may be used when the 32-bit or 64-bit floating-point co-processor hardware is available on the C28x.
FPU32 instructions are enabled by specifying the --float_support=fpu32 option. FPU32 instructions are supported for both the COFF ABI and EABI.
FPU64 instructions are enabled by specifying the --float_support=fpu64 option. The FPU64 instruction set includes all of the FPU32 instructions plus some additional 64-bit instructions. FPU64 is supported only for EABI.
When FPU support is enabled, the differences are as follows:
- Some special floating point instructions are supported. These are documented in the TMS320C28x Floating Point Unit and Instruction Set Reference Guide.
- The assembler checks for pipeline conflicts. This is because the FPU instructions are not pipeline protected. Regular C28x instructions are pipeline protected, which means that a new instruction cannot read/write its operands until all preceding C28x instructions have finished writing those operands. This is not the case with FPU instructions, which can access operands while another instruction is writing them, causing race conditions. Thus the assembler has to check for pipeline conflicts and issue warnings/errors as appropriate. The pipeline conflict detection feature is described in Section 5.17.