TI C64x+ 上的简单嵌套循环不是流水线
Simple nested loop not pipelining on TI C64x+
以下代码在 C64x+ 上编译时不是流水线:
void main ()
{
int a, b, ar[100] = {0};
for (a = 0; a < 1000; a++)
for (b = 0; b < 100; b++)
ar[b]++;
while(1);
}
My IDE (Code Composer v6) 为内部循环提供以下消息:"Loop cannot be scheduled efficiently, as it contains complex conditional expression. Try to simplify condition."
问题似乎出在嵌套循环上,但我找不到更多关于优化如此简单的循环的信息。
有没有人解决过类似的问题?
-- 附加信息--
处理器:TMS320C64x+
编译器:TI v8.0.3
编译器标志:-mv6400+ --abi=eabi -O3 --opt_for_speed=4 --include_path="D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 --gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms
链接器标志: -mv6400+ --abi=eabi -O3 --opt_for_speed=4 --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 --gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms -z -m"dsp.map" -i"D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/lib" -i"D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --reread_libs --warn_sections --xml_link_info="dsp_linkInfo.xml" --rom_model
从编译器标志中删除 --gen_profile_info
解决了这个问题。我的循环被打乱了。
以下代码在 C64x+ 上编译时不是流水线:
void main ()
{
int a, b, ar[100] = {0};
for (a = 0; a < 1000; a++)
for (b = 0; b < 100; b++)
ar[b]++;
while(1);
}
My IDE (Code Composer v6) 为内部循环提供以下消息:"Loop cannot be scheduled efficiently, as it contains complex conditional expression. Try to simplify condition."
问题似乎出在嵌套循环上,但我找不到更多关于优化如此简单的循环的信息。
有没有人解决过类似的问题?
-- 附加信息--
处理器:TMS320C64x+
编译器:TI v8.0.3
编译器标志:-mv6400+ --abi=eabi -O3 --opt_for_speed=4 --include_path="D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 --gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms
链接器标志: -mv6400+ --abi=eabi -O3 --opt_for_speed=4 --advice:performance -g --issue_remarks --verbose_diagnostics --diag_warning=225 --gen_func_subsections=on --debug_software_pipeline --gen_opt_info=2 --gen_profile_info -k --c_src_interlist --asm_listing --output_all_syms -z -m"dsp.map" -i"D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/lib" -i"D:/TI/ccsv6/tools/compiler/ti-cgt-c6000_8.0.3/include" --reread_libs --warn_sections --xml_link_info="dsp_linkInfo.xml" --rom_model
从编译器标志中删除 --gen_profile_info
解决了这个问题。我的循环被打乱了。