Resource Constraints
3-19
TMS320C62x/C67x Fixed-Point Instruction Set
The following execute packet is valid:
ADD .L1
A5:A4,A1,A3:A2
; \ One long write for
|| SHL .S2
B8,B9,B7:B6
; / each register file
Because the .L and .S units share their long read port with the store port, op-
erations that read a long value cannot be issued on the .L and/or .S units in
the same execute packet as a store.
The following execute packet is invalid:
ADD .L1
A5:A4,A1,A3:A2
; \ Long read operation and a
|| STW .D1
A8,*A9 ; / store
The following execute packet is valid:
ADD .L1
A4, A1, A3:A2
; \ No long read with
|| STW .D1
A8,*A9
; / with the store
3.7.5
Constraints on Register Reads
More than four reads of the same register cannot occur on the same cycle.
Conditional registers are not included in this count.
The following code sequences are invalid:
MPY
.M1
A1,A1,A4 ; five reads of register A1
||
ADD
.L1
A1,A1,A5
|| SUB
.D1
A1,A2,A3
MPY
.M1
A1,A1,A4 ; five reads of register A1
||
ADD
.L1
A1,A1,A5
|| SUB
.D2x A1,B2,B3
This code sequence is valid:
MPY .M1 A1,A1,A4 ; only four reads of A1
|| [A1] ADD .L1 A0,A1,A5
|| SUB .D1 A1,A2,A3
3.7.6
Constraints on Register Writes
Two instructions cannot write to the same register on the same cycle. Two in-
structions with the same destination can be scheduled in parallel as long as
they do not write to the destination register on the same cycle. For example,
a MPY issued on cycle
i followed by an ADD on cycle i + 1 cannot write to the
same register because both instructions write a result on cycle
i + 1. Therefore,
the following code sequence is invalid unless a branch occurs after the MPY,
causing the ADD not to be issued.
MPY
.M1 A0,A1,A2
ADD
.L1 A4,A5,A2