I have a project which is being entirely developed under a Linux environment, and another project which is being entirely developed under a PC environment.
I am running the same version of the TI Optimizing compiler on the same code with the same compiler flags, but it appears (from examining the .asm files) that the PC compiler produces loop code that is twice as efficient as the Linux compiler.
I've attached the .asm files (with the interlisting and extra loop debugging flags turned on). You will see that both compilers claim to be v7.3.1 and report the same flags used, and the only difference is that one is Unix and one is PC.
4606.pc_bayer_conversion_fast.asm
2604.linux_bayer_conversion_fast.asm
If you search for the first instance of "SOFTWARE PIPELINE INFORMATION" in both files, you will see that the first loop (at line 16 of the code) has an ii of 2 for a total cycle count of 1288 on the PC compiler,and has an ii of 4 for a total cycle count of 2568 on the Linux compiler. Just looking at the interlisting shortly before the software pipeline information, it appears that the PC compiler does some significantly different things in generating the optimized C code.
So, is CGT v7.3.1 in Linux really the same as CGT v7.3.1 on the PC? Should I be expected inferior performance for code built on Linux? Is there something obvious I am missing to make the Linux performance match the PC?
Just for completeness, when I do -version for the Linux version I get
TMS320C6x C/C++ Compiler v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C/C++ Parser v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x EABI C/C++ Parser v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C/C++ File Merge v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C/C++ Optimizer v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C/C++ Codegen v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Consultant Generator v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Assembly Preprocessor v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Assembler v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Compressor v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Embed Utility v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C Source Interlister v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Linker v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Absolute Lister v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Strip Utility v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x XREF Utility v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x C++ Demangler v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Hex Converter v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Library Builder v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Name Utility v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Object File Display v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
TMS320C6x Archiver v7.3.1
Build Number 1LJRN-MP70E-UARAR-SAW-ZAZG_X_T_R
and for the PC I get
TMS320C6x C/C++ Compiler v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C/C++ Parser v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x EABI C/C++ Parser v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C/C++ File Merge v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C/C++ Optimizer v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C/C++ Codegen v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Consultant Generator v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Assembly Preprocessor v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Assembler v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Compressor v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Embed Utility v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C Source Interlister v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Linker v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Absolute Lister v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Strip Utility v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x XREF Utility v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x C++ Demangler v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Hex Converter v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Library Builder v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Name Utility v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Object File Display v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R
TMS320C6x Archiver v7.3.1
Build Number 1LJRN-KDADEMDK-RTARQ-TAV-ZAZG_X_T_R