Example 6–76. Linear Assembly for FIR With Outer Loop Conditionally Executed
With Inner Loop
LDW
LDW
LDW
LDW
LDW
LDW
LDW
LDW
LDH
[sctr]
SUB
[!sctr]
SHR
[!sctr]
SHR
[!sctr]
STH
[!sctr]
STH
MV
MPYLH
[sctr]
ADD
MPYHL
ADD
MPYLH
ADD
MPYHL
ADD
MPYLH
ADD
MPYHL
ADD
MPYLH
ADD
MPYHL
ADD
MPY
[sctr]
ADD
MPYH
ADD
*h++[2],h01
*h_1++[2],h23
*h++[2],h45
.*h_1++[2],h67
*x++[2],x01
*x_1++[2],x23
*x++[2],x45
*x_1++[2],x67
*x,x8
sctr,1,sctr
sum07,15,y0
sum17,15,y1
y0,*y++[2]
y1,*y_1++[2]
x01,x01b
h01,x01b,p10
p10,sum17,p10
h01,x23,p11
p11,p10,sum11
h23,x23,p12
p12,sum11,sum12
h23,x45,p13
p13,sum12,sum13
h45,x45,p14
p14,sum13,sum14
h45,x67,p15
p15,sum14,sum15
h67,x67,p16
p16,sum15,sum16
h67,x8,p17
p17,sum16,sum17
h01,x01,p00
p00,sum07,p00
h01,x01,p01
p01,p00,sum01
Outer Loop Conditionally Executed With Inner Loop
; h[i+0] & h[i+1]
; h[i+2] & h[i+3]
; h[i+4] & h[i+5]
; h[i+6] & h[i+7]
; x[j+i+0] & x[j+i+1]
; x[j+i+2] & x[j+i+3]
; x[j+i+4] & x[j+i+5]
; x[j+i+6] & x[j+i+7]
; x[j+i+8]
; dec store lp cntr
; (sum0 >> 15)
; (sum1 >> 15)
; y[j] = (sum0 >> 15)
; y[j+1] = (sum1 >> 15)
; move to other reg file
; p10 = h[i+0]*x[j+i+1]
; sum1(p10) = p10 + sum1
; p11 = h[i+1]*x[j+i+2]
; sum1 += p11
; p12 = h[i+2]*x[j+i+3]
; sum1 +=
p12
; p13 = h[i+3]*x[j+i+4]
; sum1 += p13
; p14 = h[i+4]*x[j+i+5]
; sum1 += p14
; p15 = h[i+5]*x[j+i+6]
; sum1 += p15
; p16 = h[i+6]*x[j+i+7]
; sum1 += p16
; p17 = h[i+7]*x[j+i+8]
; sum1 += p17
; p00 = h[i+0]*x[j+i+0]
; sum0(p00) = p00 + sum0
; p01 = h[i+1]*x[j+i+1]
; sum0 += p01
Optimizing Assembly Code via Linear Assembly
6-141
Need help?
Do you have a question about the TMS320C6000 and is the answer not in the manual?
Questions and answers