主题中讨论的其他器件:MATHLIB
工具/软件:TI C/C++编译器
您好!
我有一个函数、用于计算两个复数矢量的相位(在两个矢量上执行 atan2 ()))并使用 C6678 MATHLIB (atan2sp_I)中的优化 atan2。 我在所有优化均处于活动状态的情况下进行编译:
- opt_level=3
- opt_for_speed=5
- speculate_loads=自动
- optimize_with _debug=on (也与 sulpress all debug 连接)
当我在一个更大的文件内编译函数时(在输出循环内调用它)(test_atan)、test_atan ()是用 ii = 85进行软件流水线处理的(无论如何它不使用 SPLOOP)、并且函数 atan2sp_i 是内联编译的。
问题是、当我在单独的文件中将 test_atan (在所有声明为内联的被调用函数中组合在一起)放置时、由于以下原因、它未进行优化:
无法有效地调度第141行的循环、因为它包含函数调用("_Z27atan2f_sr1i_atan2spi_inlineffiii")。 尝试使"_Z27atan2f_sr1i_atan2spi_inlineffiii"成为内联函数。
即使 atan2f_sr1i_atan2spi_inline 已声明为内联、并且在我不隔离编译它时正确内联的情况也是如此。
我希望将其保留在单独的编译单元中、这既是因为可重用性、也是因为正确优化编译过程需要大量时间。