No
execute
delay
3PC
Pipeline Conflicts
8-6
Example 8–2. Delayed Branch
BRD THREE ; Unconditional delayed branch
MPYF ; Executed
ADD ; Executed
SUBF ; Executed
AND ; Not executed
.
.
.
THREE MPYF ; Fetched after SUBF is fetched
.
.
.
Pipeline Operation
PC Fetch Decode Read Execute
nBRD — — —
n+1 MPYF BRD
n+2 ADDF MPYF BRD
n+3 SUBF ADDF MPYF BRD
3MPYF SUBF ADDF MPYF

8.2.2 Register Conflicts

Register conflicts involve reading or writing registers used for addressing.
These conflicts occur when the pertinent register is not ready to be used. Some
conditions under which you can avoid register conflicts are discussed in Sec-
tion 8.3 on page 8-19.
The registers comprise the following three functional groups:
Group 1 This group includes auxiliary registers (AR0–AR7), index
registers (IR0, IR1), and block-size register (BK).
Group 2 This group includes the data-page pointer (DP).
Group 3 This group includes the system-stack pointer (SP).
If an instruction writes to one of these three groups,

the decode unit cannot use

any register within that particular group until the write is complete, that is, until

the instruction execution is completed

. In Example 8–3, an auxiliary register