SPRZ496E October 2021 – August 2026 TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1
C28: Fast Integer Division (FID) and DIVF64 Incorrect Results
0
Incorrect results can occur for certain 2-cycle FPU instructions when using compiler versions before 22.6.3.LTS or 21.6.2.LTS.
When the below affected 2p FPU Instructions are followed by any of the FID or DIVF64 instructions with less than two delay slots, register corruption can occur which leads to incorrect results.
2-cycle (2p) FPU Instructions which need two delay slots before a FID or DIVF64 instruction:
Fast Integer Division (FID) instructions:
DIVF64 instructions:
Example of issue:
The issue can be reproduced with a sequence like:
ADDF32 R0H, R0H, #32768 ; 2p FPU instruction
NOP ; Only one delay slot (insufficient)
ABSI32DIV32 R2H, R1H, R3H ; Fast Integer Division instruction
In this case, the value in R0H can leak into R1H, causing incorrect results. Adding an additional NOP resolves the issue:
ADDF32 R0H, R0H, #32768 ; 2p FPU instruction
NOP ; First delay slot
NOP ; Second delay slot (required)
ABSI32DIV32 R2H, R1H, R3H ; Fast Integer Division instruction