Loop Carry Paths
6-83
Optimizing Assembly Code via Linear Assembly
6.7.6
Modulo Iteration Interval Scheduling
Table 6–17 shows the modulo iteration interval table for the IIR filter. The SHR
instruction on cycle 10 finishes in time for the MPY p2 instruction from the next
iteration to read its result on cycle 11.
Table 6–17. Modulo Iteration Interval Table for IIR (4-Cycle Loop)
ÁÁÁÁ
ÁÁÁÁ
Unit/Cycle
ÁÁÁÁÁ
ÁÁÁÁÁ
0
ÁÁÁÁ
ÁÁÁÁ
4
ÁÁÁÁÁ
ÁÁÁÁÁ
8, 12, 16, ...
ÁÁÁÁÁ
ÁÁÁÁÁ
Unit/Cycle
ÁÁÁÁ
ÁÁÁÁ
1
ÁÁÁÁÁ
ÁÁÁÁÁ
5
ÁÁÁÁÁ
ÁÁÁÁÁ
9, 13, 17, ...
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.D1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
LDH xi
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
*
LDH xi
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
**
LDH xi
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.D1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
LDH xi+1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
LDH xi+1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
**
LDH ci+1
ÁÁÁÁ
ÁÁÁÁ
.D2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ADD s0
ÁÁÁÁÁ
ÁÁÁÁÁ
.D2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.M1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.M1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
MPY p0
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
MPY p0
ÁÁÁÁ
ÁÁÁÁ
.M2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.M2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.L1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.L1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
SUB cntr
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
SUB cntr
ÁÁÁÁ
ÁÁÁÁ
.L2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.L2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ADD s1
ÁÁÁÁ
ÁÁÁÁ
.S1
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.S1
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
.S2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.S2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
1X
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
1X
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
2X
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
2X
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ADD s1
ÁÁÁÁ
ÁÁÁÁ
Unit/Cycle
ÁÁÁÁÁ
ÁÁÁÁÁ
2
ÁÁÁÁ
ÁÁÁÁ
6
ÁÁÁÁÁ
ÁÁÁÁÁ
10, 14, 18, ...
ÁÁÁÁÁ
ÁÁÁÁÁ
Unit/Cycle
ÁÁÁÁ
ÁÁÁÁ
3
ÁÁÁÁÁ
ÁÁÁÁÁ
7
ÁÁÁÁÁ
ÁÁÁÁÁ
11, 15, 19, ...
ÁÁÁÁ
ÁÁÁÁ
.D1
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.D1
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
.D2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.D2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
STH yi+1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.M1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
MPY p1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
MPY p1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.M1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
.M2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.M2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
MPY p2
*
MPY p2
ÁÁÁÁ
ÁÁÁÁ
.L1
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.L1
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
.L2
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
.L2
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.S1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
B LOOP
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
B LOOP
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.S1
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
.S2
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
SHR yi+1
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
.S2
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
1X
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁ
MPY p1
ÁÁÁÁÁ
ÁÁÁÁÁ
*
MPY p1
ÁÁÁÁÁ
ÁÁÁÁÁ
1X
ÁÁÁÁ
ÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
2X
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
2X
ÁÁÁÁ
Á
ÁÁ
Á
ÁÁÁÁ
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
MPY p2
ÁÁÁÁÁ
Á
ÁÁÁ
Á
ÁÁÁÁÁ
*
MPY p2
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ
Note:
The asterisks indicate the iteration of the loop.