SPRUI04F july 2015 – april 2023
advice #30007: Attempting to use floating-point operation "__mpyd" on
fixed-point device, at line 5 (there may be other instances
of this). Such calls reduce loop performance; use fixed point
operation if possible.
The compiler inserts calls to special functions in the run-time support library (RTS) to support operations that are not natively supported by the instruction set architecture (ISA). For example, fixed point ISAs do not support floating-point instructions and the compiler will generate a call to an RTS routine to carry out the floating point operation. In the test case below, the floating-point multiplication is unavailable for a fixed-point device :
void func(float *p, float *q, int n)
{
unsigned int i;
for (i = 1; i < n; i++)
{
p[i] = (q[i] * 12.4) / p[i - 1];
}
}
If compiled for C6400+ (compiler option -mv6400+) the compiler will use an RTS call to carry out the operation. Such a call will disable software pipelining. You can rewrite the operation, or use a fixed point operation to prevent this.
Also see Advice #30001 in Section 4.15.7.