move
move
move
move
move
;
; Perform all FFT passes with triple nested DO loops
;
do
move
do
move
move
move
move
move
move
move
move
do
move
move
faddsub.s d0,d7
faddsub.s d5,d2
move
move
faddsub.s d1,d4
faddsub.s d1,d5
fmpy
fmpy
faddsub.s d4,d7
fmpy.s d6,d9,d0
fmpy
fmpy
faddsub.s d5,d1
fmpy.s d4,d9,d1
fmpy.s d5,d8,d2
B-22
#temp,r2
(r2)+,r6
#0,r3
#coef+table/4,r1
#coef,r5
#@cvi(@log(points)/@log(4)+0.5),_end_pass
#data,r4
n2,_end_grp
r3,n5
;update rotation factor
n5,n1
;
(r5)+n5
;point at wi1
(r1)+n1
;point at wr1
(r4)+n4
r4,r0
;point at B data (br,bi)
(r4)+n4
(r4)+n4
;point at D data (dr,di)
n0,_end_bfy
d5,d8,d2
faddsub.s d6,d3
d5,d9,d3
faddsub.s d6,d0 d1.s,x:(r2)- d3.s,y:(r6)
d6,d8,d0
fadd.s
d0,d2
d4,d8,d3
fsub.s
d3,d0
DSP96002 USER'S MANUAL
;initialize temp storage pointers
;
"
;initialize group index counter
;initialize wr (cos) pointer
;initialize wi (sin) pointer
"
x:(r4),d0.s
x:(r0),d7.s
x:(r0),d1.s
x:(r4)-n4,d4.s
x:(r4),d4.s
d2.s,x:(r2)+ y:(r4),d3.s
d0.s,d6.s
x:(r2)+,d1.s y:(r6),d5.s
x:(r2)-,d6.s
d7.s,x:(r0)+n0 d1.s,y:
d2.s,x:(r0)
2
1
1
2
2
2
2
2
1
1
1
1
1
1
1
1
2
1
y:(r4),d2.s
1
y:(r0)-n0,d5.s
1
1
1
y:(r0),d6.s
1
1
y:(r1)+n1,d8.s
1
y:(r5)+n5,d9.s
1
1
d6.s,y:(r2)
1
y:(r5)+n5,d9.s
1
y:(r1)+n1,d8.s
1
1
1
1
d0.s,y:
1
MOTOROLA
2
1
1
2
2
3
2
3
1
1
1
1
1
1
1
1
3
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1