SPRUJG0B December   2024  – November 2025 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P329SM-Q1

 

  1.   1
  2.   Abstract
  3.   Trademarks
  4. 1Introduction
  5. 2Performance Optimization
    1. 2.1 Compiler Settings
      1. 2.1.1 Enabling Debug and Source Inter-Listing
      2. 2.1.2 Optimization Control
      3. 2.1.3 Floating-Point Math
      4. 2.1.4 Fixed-Point Division
      5. 2.1.5 Single vs Double Precision Floating-Point
      6. 2.1.6 Link-Time Optimization (LTO)
    2. 2.2 Memory Settings
      1. 2.2.1 Executing Code From RAM
      2. 2.2.2 Executing Code From Flash
      3. 2.2.3 Data Placement
    3. 2.3 Code Construction and Configuration
      1. 2.3.1 Inlining
      2. 2.3.2 Intrinsics
      3. 2.3.3 Volatile Variables
      4. 2.3.4 Function Arguments
      5. 2.3.5 Enabling Wider Data Accesses
      6. 2.3.6 Auto Code-Generation Tools
      7. 2.3.7 Accurately Profiling Code
    4. 2.4 Application Code Optimization
      1. 2.4.1 Optimized SDK Libraries
      2. 2.4.2 Optimizing Code-Size With Libraries
      3. 2.4.3 C29 Special Instructions
      4. 2.4.4 C29 Parallelism
      5. 2.4.5 32-Bit Variables and Writes Preferred
      6. 2.4.6 Coding Style and Impact on Performance
  6. 3References
  7. 4Revision History

Single vs Double Precision Floating-Point

If FPU64 is available (CPU3 on F29H85x), double-precision floating point operations can be efficiently performed. To enable use of the FPU64, use the compiler option:

-mfpu=f64

On the C29, EABI is the only supported executable format. COFF is not supported. With EABI, the double type is 64-bits. User code that contains literal constants (1.54) without a trailing 'f' (1.54f) is interpreted as double precision per the C standard. This leads to implicit conversion of other associated variables to double precision, which negatively impacts performance when FPU64 is not available (CPU3 on F29H85x).

Using the following compiler option generates a warning when the above occurs:

-Wdouble-promotion

Alternately, the following compiler option can be used to limit floating-point constants to single-precision. This eliminates the need to add a trailing 'f' to every floating-point constant. However, with this approach, all floating-point constants become single-precision.

-cl-single-precision-constant