Hi there,
I am using the CLA on the F28069. I am trying to compile: __asm(" MMACF32 MR3,MR2,MR2,MR0,MR1"); I keep getting an error:
[E0002] Instruction can only appear in parallel. Any suggetions?
-Thanks in advance
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.
The MMACF32 instruction must perform a data move in parallel with the multiply-accumulate. You're missing an instruction after the MMACF32 which does this. Take a look at the MMACF32 instruction description in the CLA User's Guide (spruge6a, p.87). There is always a "||MMOV32 in the next line.
I think you can do this in the same inline assembly, something like this:
__asm(" MMACF32 MR3, MR2, MR2, MR0, MR1 || MMOV32 MRx *MARy");
If not, try separating the data move in another inline assembly, but without the leading whitespace:
__asm("|| MMOV32 MRx var1");
I hope this helps.
Regards,
Richard
You're welcome!
Did you try putting it all on one line? This works for me:
__asm(" MMACF32 MR3, MR2, MR2, MR0, MR1 || MMOV32 MR0, *MAR0");
Best regards,
Richard