ZHCUAQ1F 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.
编译器在运行时支持库 (RTS) 中插入对特殊函数的调用,以支持指令集架构 (ISA) 本机不支持的运算。例如,定点 ISA 不支持浮点指令,编译器将生成对 RTS 例程的调用来执行浮点运算。在下面的测试用例中,浮点乘法对于定点器件不可用:
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];
}
}
如果为C6400+ 进行编译(编译器选项 -mv6400+),编译器将使用 RTS 调用来执行运算。这样的调用将禁用软件流水线。您可以重写该运算,或使用定点运算来防止这种情况发生。
另请参阅节 4.15.7中的 Advice #30001。