Cycle Timings and Interlock Behavior
ARM DDI 0301H
Copyright © 2004-2009 ARM Limited. All rights reserved.
16-7
ID012310
Non-Confidential, Unrestricted Access
16.3
Data processing instructions
This section describes the cycle timing behavior for the AND, EOR, SUB, RSB, ADD, ADC,
SBC, RSC, CMN, ORR, MOV, BIC, MVN, TST, TEQ, CMP, and CLZ instructions.
16.3.1
Cycle counts if destination is not PC
Table 16-4 lists the cycle timing behavior for data processing instructions if its destination is not
the PC. You can substitute ADD with any of the data processing instructions identified in the
opening paragraph of this section.
16.3.2
Cycle counts if destination is the PC
Table 16-5 lists the cycle timing behavior for data processing instructions if its destination is the
PC. You can substitute ADD with any data processing instruction except for a MOV and CLZ.
A CLZ with the PC as the destination is an Unpredictable instruction.
The timings for a MOV instruction are given separately in the table.
For condition code failing cycle counts, the cycles for the non-PC destination variants must be
used.
Table 16-4 Data Processing Instruction cycle timing behavior if destination is not PC
Example Instruction
Cycle
s
Earl
y
Reg
Late
Reg
Result
latency
Comment
ADD <Rd>, <Rn>, <Rm
.
1
-
-
1
Normal case.
ADD <Rd>, <Rn>, <Rm>, LSL #<immed>
1
<Rm>
-
1
Requires a shifted source register.
ADD <Rd>, <Rn>, <Rm>, LSL <Rs
>
2
<Rs>
<Rn>
2
Requires a register controlled shifted
source register. Instruction takes two
issue cycles. In the first cycle the shift
distance
Rs
is sampled. In the second
cycle the actual shift of
Rm
and the
ADD instruction occurs.
Table 16-5 Data Processing Instruction cycle timing behavior if destination is the PC
Example Instruction
Cycle
s
Earl
y
Reg
Late
Reg
Result
latency
Comment
MOV pc, lr
4
-
-
-
Correctly return stack
predicted
MOV pc, lr
MOV pc, lr
7
-
-
-
Incorrectly return stack
predicted
MOV pc, lr
MOV <cond> pc, lr
5-7
a
-
-
-
Conditional return, or return
when return stack is empty
MOV pc, <Rd
>
5
-
-
-
MOV to PC, no shift required
MOV <cond> pc, <Rd>
5-7
a
-
-
-
Conditional MOV to PC, no
shift required
MOV pc, <Rn>, <Rm>, LSL #<immed>
6
<Rm>
-
-
Conditional MOV to PC, with a
shifted source register