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.

MSP430F235 Multiplier latency

To access the Result registers you need at least one cycle if using indirect addressing modes as per datasheet section 11.2.4. I think I understand but I'm not certain

I am using the MACS as the last in a series of calcs. Xsquared + Y squared + Z squared. (There are instructions between the A squared and B squared calcs but not after the Z squared as below.

No other multiply calculations (hardware or software) are used in the code and this is not in an ISR

The following assembler is generated. (from CCS disassembler view)

db04: 4F82 0136 MOV.W R15,&Multiplier_MACS
1223 OP2 = temp_Z_vector_int; // Z Squared
db08: 4F82 0138 MOV.W R15,&Multiplier_OP2
1226 vector_result_temp = RESHI; // get the MSB result
db0c: 421F 013C MOV.W &Multiplier_RESHI,R15
1228 vector_result_temp |= RESLO; // Add in the LSB

In this case do I need to add a nop before I read the MSB result. 

I am chasing an obscure bug that only happens occasionally so it is difficult to just add in the nop and check if the bug has gone away.

It is possible multiply accumulator latency is my issue?

Is there any extra latency to what the datasheet states if the accumulator/adder is used rather than the straight multiply ?

regards john c

  • As far as I know, the User's Guide does not lie.

    If you are not sure whether the generated code uses indirect addressing or not, you must insert the NOP. It might be simpler to implement you own multiplication function with inline assembler, or just let the compiler generate the multiplications.