I'm using Timer A configured to count cycles for me. (The CCS cycle counter is worthless -- seriously useless -- so I have to use a hardware timer/counter to get results that are meaningful.)
In my testing, I'm finding that the following:
pushm #3, R11
popm #3, R11
Takes 11 cycles.
(According to Timer A. There are a lot of other details required to get that value -- turning the timer on and off occupies 6 cycles despite the fact that each instruction is 4 cycles in length so should take 8 cycles. But I have to accept that the cycle point where the "turn-on" and "turn-off" takes place isn't necessarily obvious. So a lot of testing has taken me to the point where I can actually calibrate out the results I'm reporting. It's been a process. Trust me, these values are accurate. I've put a lot of effort into ensuring that fact.)
The documentation in Table 4-17 of the MSP430FR58xx, MSP430FR59xx, and MSP430x6xx Family User's Guide:

shows that the cycle count should be 5 cycles for each, for a total of 10 cycles, not 11 cycles.
I'm running at 1 MHz, so I don't think this is any kind of wait-state issue with the FRAM and it certainly isn't a wait state issue with the SRAM, where the stack is located.
So. Any idea where the extra cycle is coming from? Is the table simply wrong?
If so, this would NOT surprise me. The PUSH Rx instruction takes 3 cycles but the POP Rx instruction is actually a MOV @SP+, Rx (Format I instruction) and so takes 2 cycles (see Table 4-10), not 3. Consequently, a PUSH followed by a POP is 5 cycles and that's expected.
That said though, I do NOT expect 11 cycles given the above table which suggests 10 cycles for the pair (where N=3.)
Any help would be appreciated. I'd like to fully understand what's going on here.
Thanks,
Jon