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.

Error in assembler for MPYSPDP



Hi,

 I have detected an error in the assembler tool of all CGT versions I tested (6.0.8, 6.1.22, 7.4.2, and 7.4.4, the latest). The error is easily shown by trying to assemble the following code (test.asm) for the C672x DSPs:

    .text
   .global _test
_test:
    NOP
   MPYSPDP.M2X A24,B27:B26,B7:B6
    .end

The command line used to assemble this piece of code is:

cl6x.exe -mv67p -c test.asm

The assembler gives the following error message:

"test.asm", ERROR!   at line 5: [E0800] Erroneous use of cross path with long operand

However, if I use this other piece of code and assemble it:

    .text
    .global _test
_test:
    NOP
    .uint 0x036b15b2
    .end

An then I use the disassembler with this command line:

dis6x.exe test.obj > test.txt

 It outputs:

00000000   00000000           NOP
00000004   036b15b2           MPYSPDP.M2X   A24,B27:B26,B7:B6

As you can see, the disassembled code is the same as the original source code. However the original code gives an error when assembling.

 Greetings.

 

  • I cannot reproduce this problem with the standalone disassembler (dis6x), which means this is a problem with the CCS disassembler.  I think this thread should be moved to the CCS forum.

    What version of CCS are you using?

  • Archaeologist said:
    I cannot reproduce this problem with the standalone disassembler (dis6x), which means this is a problem with the CCS disassembler.

    I thought the stated problem was that the assembler failed to accept "MPYSPDP.M2X A24,B27:B26,B7:B6", rather than being a problem with the disassembler.

    I can repeat the problem with the C6000 CGT 7.4.4:

    C:\temp>C:\ti_ccs5_4\ccsv5\tools\compiler\c6000_7.4.4\bin\cl6x.exe -mv67p -c test.asm
    "test.asm", ERROR! at line 5: [E0800] Erroneous use of cross path with long
    operand
    MPYSPDP.M2X A24,B27:B26,B7:B6

    1 Assembly Error, No Assembly Warnings

    Errors in Source - Assembler Aborted

    >> Compilation failure

  • Oh, I see.  I'll re-examine this issue.

  • This is a bug in the disassembler.  According to the TMS320C67x/C67x+ DSP CPU and Instruction Set Reference Guide (SPRU733A), only the second operand (the double-precision input) may be fetched from the cross path.  Therefore, the following instruction is not legal:

        MPYSPDP.M2X A24,B27:B26,B7:B6

    The opcode 0x036b15b2 should disassemble to:

        MPYSPDP.M2X B24,A27:A26,B7:B6

    I've submitted SDSCM00047563 to track this issue.