This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

What Is The "--no_parallel_loads" Option?

 Is there such a thing?

  • I presume you are talking about the compiler for the C6000 series of CPU's.  No, there is no such option.

    Thanks and regards,

    -George

  • Timothy,

    Which processor are you using and where did you see this switch?

    I vaguely remember a silicon bug in one of our DSPs several years ago, like maybe 10 or so years. We fixed it in silicon but it took a while and the compiler and assembler tools teams figured out a way to avoid generating code that would encounter the bug so some customers could continue with production with that DSP.

    It was interesting that the compiler fix (night not have been exactly what you asked about since George has not seen it) actually improved code performance in a few tight algorithms.

    Your reason for asking and processor would help with digging deeper, both in our databases and in my recollection.

    Regards,
    RandyP
  • Hi RandyP.

    Processor is C6748, Rev 2.2 silicon. Using Code Composer Studio IDE, and compiler version 7.6 (this also applies to compiler version 7.4, though). This "option" appears in the following menu; bring up the project properties (right click on project), and then find the Build, C6000 Compiler Options, Advanced Options, Assembler Options, Pre-define Assembly Symbol Name. In this field, I find the following definition:

    __TI_NO_PARALLEL_LOADS=0

    Code Composer stuffs that definition in by default when a project (C/C++) is created. I can delete it, but CCS will always re-insert it when a project is copied, moved, etc.

    Tim

  • Okay, I found it in the source code for the 7.6.0 release. It has been removed in more recent versions of the compiler. That assembly macro was used in a few places in the RTS which use hand-coded assembly to choose a less efficient code sequence that did not have load instructions in parallel, to avoid the silicon bug. This macro could be used in other hand-coded assembly for the same purpose.

    It looks like this defect applied to C64x+, not C67x, but I'm not 100% sure about that.
  • Tim,

    You are okay on the C6748 which uses the C674x core.

    The bug existed for the C6455, but was eventually fixed in the C64x+ before the C674x core was created as a C64x+ superset and merger with C67x+. The compiler/assembler switch was required for the C6455 (the first C64x+ device), but was no longer needed for later devices with the C64x+ like the C6454/55/57 and C6474.

    The GUI may automatically add the symbol definition with =0 to make sure the feature is not applied in the compiler. Perhaps leaving it undefined would result in it defaulting to =1 which could cause less optimized memory operations. I am only guessing about why, but leaving it in there with =0 will not be a problem.

    Do you have the compiler switch set for the C674x core? I think that would be -mv6740 or similar.

    Regards,
    RandyP
  • Yes. I have the compiler/IDE configured for the C674x core.

    I also have noted that despite its presence in the IDE, the CRC's of the software object/binary produced by an independent build sequence under Cygwin using the compiler/assembler stand-alone and without this option are identical. I am tying up loose ends in the project.

    Thank you for your prompt response and information.

    Regards,
    Tim