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.

Problem with parallel exectution of linear assembly code

Hi, 

I have the problem, that the compiler always removes the instructions for parallel execution of the lines three and four ( Code Composer Studio 3.3).

(A_xx = .rega, B_xx = .regb) (C64X+)

Linear Assembly  
          MPY32     .M1    A_tmp1,        A_tmp1,        A_mpy2:A_mpy3
    ||    MPY32     .M2    B_tmp1,        B_tmp1,       B_mpy2:B_mpy3       
    ||    SHL        .S1    A_mpy0,        Q_int,        A_mpy0
    ||    SHL        .S2    B_mpy0,        Q_int,       B_mpy0

Assembly
1180044C 0956AA01            MPY32.M1      A21,A21,A19:A18
11800450 084E6A02 ||         MPY32.M2      B19,B19,B17:B16
11800454 04A4ACE2           SHL.S2           B9,B5,B9
11800458 67E2                     SHL.S1           A7,A3,A7

Does anyone know, what the problem is?


  • The linear assembler silently ignores the "||" in the input.  Just remove them.  It schedules the instructions using its own algorithm.  There isn't enough information here to comment on why those particular instructions are not scheduled in parallel.  Since they are all independent, it cannot be because of data dependences.  There must be some other reason.

    Thanks and regards,

    -George