📄 cfft32c.lst
字号:
198 ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
199 ; CALCULATION PERFORMED: INPLACE COMPUTATION
200 ; AR6 -> PR'=(PR+QI*W-QR*W)/2
201 ; AR2 -> QR'=(PR-QI*W+QR*W)/2
202 ; AR6+1 -> PI'=(PI-QI*W-QR*W)/2
203 ; AR2+1 -> QI'=(PI+QI*W+QR*W)/2
204 ; PR and PR', PI and PI', QR and QR', QI and QI' are
205 ; stored in the same locations
206 ; POINTERS AT EXIT
207 ; AR6->(PR+1,PI+1,....)
208 ; AR2->(QR+1,QI+1,....)
209 ;------------------------------------------------------
210 ; (Content of REG after exec.)
211 P3BY4I .macro ; AR5 PREG AR6 AR2
212 ; - PR QR
213 MOVL ACC,*XAR6 ; ACC=PR - PR QR
214 SFR ACC,#1 ; ACC=PR/2 - PR QR
215 QMPYL P,XT,*XAR2 ; PREG=W*QR/2 W*QR/2 PR QR
216 ADDL ACC,P ; ACC=(PR+W*QR)/2 W*QR/2 PR QR
217 MOVL XAR5,P ; XAR5=W*QR/2 W*QR/2 PR QR
218 QMPYL P,XT,*+XAR2[2] ; ACC=(PR+W*QR)/2 W*QI/2 PR QR
219 SUBL ACC,P ; ACC=(PR-W*QI+W*QR)/2 W*QI/2 PR QR
220 MOVL *XAR2++,ACC ; QR'=(PR-W*QI+W*QR)/2 W*QI/2 PR QI
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 5
221 NEG ACC ; ACC=-(PR-W*QI+W*QR)/2 W*QI/2 PR QI
222 ADDL *XAR6++,ACC ; PR'=(PR+W*QI-W*QR)/2 W*QI/2 PI QI
223
224 MOVL ACC,*XAR6 ; ACC=PI W*QI/2 PI QI
225 SFR ACC,#1 ; ACC=PI/2 W*QI/2 PI QI
226 ADDL ACC,P ; ACC=(PR+W*QI)/2 W*QI/2 PI QI
227 ADDL ACC,XAR5 ; ACC=(PI+W*QI+W*QR)/2 W*QR/2 PI QI
228 NOP *,ARP2
229 MOVL *0++,ACC ; QI'=(PI+W*QI+W*QR)/2 W*QR/2 PI QR+1
230 NEG ACC ; ACC=-(PI+W*QI+W*QR)/2 W*QR/2 PI QR+1
231 ADDL *XAR6,ACC ; PI'=(PI-W*QI-W*QR)/2 W*QR/2 PI QR+1
232 NOP *0++ ; W*QR/2 PR+1 QR+1
233 .endm
234
235
236 ;----------------------------------------------------
237 ; MACRO 'BFLY' SPM set to 1bit right shift
238 ; Number of WORDS/Number of Cycles 21
239 ; USAGE: General Butterfly RADIX 2 -> TWIDDLE FACTOR W=WR-jWI
240 ;
241 ; P=PR+jPI, Q=QR+jQI, W=WR-jWI
242 ; P'=P+W*Q and Q'=P-W*Q
243 ;
244 ; REGISTER USED: XAR0,XAR2,XAR3,XAR4,XAR5,XAR6,ACC,XT,P
245 ;
246 ; POINTERS AT ENTRY
247 ; AR6->(PR,PI,PR+1,PI+1,PR+2,PI+2,....)
248 ; AR2->(QR,QI,QR+1,QI+1,QR+2,QR+2,....)
249 ; AR3-> Real Part of Twiddle Factor: WR(COSx)
250 ; AR4-> Imaginary Part of Twiddle Factor: WI(SINx)
251 ; AR5-> Temporary Variable
252 ; CALCULATION PERFORMED: INPLACE COMPUTATION
253 ; AR6 -> PR'=(PR+QR*WR+QI*WI)/2
254 ; AR2 -> QR'=(PR-QR*WR-QI*WI)/2
255 ; AR6+1 -> PI'=(PI+QI*WR-QR*WI)/2
256 ; AR2+1 -> QI'=(PI-QI*WR+QR*WI)/2
257 ; PR and PR', PI and PI', QR and QR', QI and QI' are
258 ; stored in the same locations
259 ; POINTERS AT EXIT
260 ; AR6->(PR+1,PI+1,....)
261 ; AR2->(QR+1,QI+1,....)
262 ; AR3-> Real Part of Next Twiddle Factor
263 ; AR4-> Imaginary Part ofNext Twiddle Factor
264 ;------------------------------------------------------
265
266 BFLY .macro p ; XT AR6 AR2 AR3 AR4
267 ; - PR QR WR WI
268 MOVL XT,*XAR3 ; XT=WR WR PR QR WR WI
269 NOP *0++ ; WR PR QR WR+n WI
270 QMPYL P,XT,*XAR2++ ; P=QR*WR WR PR QI WR+n WI
271 QMPYL ACC,XT,*,ARP4 ; ACC=QI*WR WR PR QI WR+n WI
272 MOVL *-SP[TEMP],P ; TEMP=QR*WR WR PR QI WR+n WI
273
274 MOVL XT,*0++ ; XT=WI WR PR QI WR+n WI+n
275 QMPYL P,XT,*--XAR2 ; P=WI*QR WR PR QR WR+n WI+n
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 6
276 SUBL ACC,P ; ACC=(QI*WR-QR*WI) WR PR QR WR+n WI+n
277
278 .if(TF_QFMAT==Q30)
279 LSL ACC,#1 ; ACC=(QI*WR-QR*WI) (Q30)
280 .endif
281
282 MOVL XAR5,ACC ; XAR5=(QI*WR-QR*WI) (Q30)
283
284 QMPYL ACC,XT,*+XAR2[2]; ACC=WI*QI WR PR QR WR+n WI+n
285 ADDL ACC,*-SP[TEMP] ; ACC=(QR*WR+QI*WI) WR PR QR WR+n WI+n
286
287 .if(TF_QFMAT==Q30)
288 LSL ACC,#1 ; ACC=(QR*WR+QI*WI) in Q30
289 .endif
290
291 MOVL P,*XAR6 ; P=PR WR PR QR WR+n WI+n
292 ADDL ACC,P<<PM ; ACC=(PR+QR*WR+QI*WI)/2 WR PR QR WR+n WI+n
293 MOVL *XAR6++,ACC ; PR'=(PR+QR*WR+QI*WI)/2 WR PI QR WR+n WI+n
294
295 SUBL P,ACC ; P=(PR-QR*WR-QI*WI)/2 WR PI QR WR+n WI+n
296 MOVL *XAR2++,P ; QR'=(PR-QR*WR-QI*WI)/2 WR PI QI WR+n WI+n
297
298 MOVL ACC,XAR5 ; ACC=(QI*WR-QR*WI)/2 WR PI QI WR+n WI+n
299 MOVL P,*XAR6 ; P=PI WR PI QI WR+n WI+n
300 ADDL ACC,P<<PM ; ACC=(PI+QI*WR-QR*WI)/2 WR PI QI WR+n WI+n
301 MOVL *XAR6++,ACC ; (PI+QI*WR-QR*WI)/2 WR PR+1 QI WR+n WI+n
302
303 SUBL P,ACC ; P=(PI-QI*WR+QR*WI)/2 WR PR+1 QI WR+n WI+n
304 MOVL *XAR2++,P ; QI'=(PI-QI*WR+QR*WI)/2 WR PR+1 QR+1 WR+n WI+n
305 .endm
306
307
308 ;----------------------------------------------------
309 ; MACRO 'COMBO' SPM set to 1bit right shift
310 ; Number of WORDS/Number of Cycles 33
311 ; USAGE: RADIX 4 USED AT THE FIRST STAGE
312 ;
313 ; REGISTER USED: XAR0,XAR1,XAR2,XAR3,XAR4,XAR5,XAR6,ACC,XT,P
314 ;
315 ; POINTERS AT ENTRY
316 ; AR6->(R1,I1)
317 ; AR2->(R2,I2)
318 ; AR3->(R3,I3)
319 ; AR4->(R4,I4)
320 ; AR5-> Temporary Variable
321 ; CALCULATION PERFORMED: INPLACE COMPUTATION
322 ; AR6 -> R1'=(R1+R2+R3+R4)/4
323 ; AR2 -> R2'=(R1-R2+I3-I4)/4
324 ; AR3 -> R3'=(R1+R2-R3-R4)/4
325 ; AR4 -> R4'=(R1-R2-I3+I4)/4
326 ; AR6+1 -> I1'=(I1+I2+I3+I4)/4
327 ; AR2+1 -> I2'=(I1-I2-R3+R4)/4
328 ; AR3+1 -> I3'=(I1+I2-I3-I4)/4
329 ; AR4+1 -> I4'=(I1-I2+R3-R4)/4
330 ; POINTERS AT EXIT
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 7
331 ; AR6->(R5,I5)
332 ; AR2->(R6,I6)
333 ; AR3->(R7,I7)
334 ; AR4->(R8,I8)
335 ;---------------------------------------------------
336 ; (Content of REG after exec.)
337 COMBO .macro ; AR6 AR2 AR3 AR4
338 MOVL ACC,*XAR3 ; ACC=R3 R1 R2 R3 R4
339 SFR ACC,#1 ; ACC=R3/2
340 MOVL P,*XAR4 ; P=R4
341 SUBL ACC,P<<PM ; ACC=(R3-R4)/2
342 MOVL XT,ACC ; T=(R3-R4)/2
343 ADDL ACC,P ; ACC=(R3+R4)/2
344 MOVL XAR1,ACC ; XAR1=(R3+R4)/2
345
346 MOVL ACC,*XAR6 ; ACC=R1
347 SFR ACC,#1 ; ACC=R1/2
348 MOVL P,*XAR2 ; P=R2
349 SUBL ACC,P<<PM ; ACC=R1-R2/2
350 MOVL *-SP[TEMP],ACC ; temp=(R1-R2)/2
351 ADDL ACC,*XAR2 ; ACC=(R1+R2)/2
352
353 SFR ACC,#1 ; ACC=(R1+R2)/4
354 MOVL P,XAR1 ; P=(R3+R4)/2
355 ADDL ACC,P<<PM ; ACC=(R1+R2+R3+R4)/4
356 MOVL *XAR6++,ACC ; R1'=(R1+R2+R3+R4)/4
357 SUBL ACC,P ; ACC=(R1+R2-R3-R4)/4
358 MOVL *XAR3++,ACC ; R3'=(R1+R2-R3-R4)/4
359
360 MOVL ACC,*XAR3 ; ACC=I3
361 SFR ACC,#1 ; ACC=I3/2
362 MOVL P,*+XAR4[2] ; P=I4
363 SUBL ACC,P<<PM ; ACC=(I3-I4)/2
364 MOVL XAR1,ACC ; XAR1=(I3-I4)/2
365 ADDL ACC,P ; ACC=(I3+I4)/2
366 MOVL XAR5,ACC ; XAR5=(I3+I4)/2
367
368 MOVL ACC,*-SP[TEMP] ; ACC=(R1-R2)/2
369 SFR ACC,#1 ; ACC=(R1-R2)/4
370 MOVL P,XAR1 ; P=(I3-I4)/2
371 ADDL ACC,P<<PM ; ACC=(R1-R2+I3-I4)/4
372 MOVL *XAR2++,ACC ; R2'=(R1-R2+I3-I4)/4
373 SUBL ACC,P ; ACC=(R1-R2-I3+I4)/4
374 MOVL *XAR4++,ACC ; R4'=(R1-R2-I3+I4)/4
375
376 MOVL ACC,*XAR6 ; ACC=I1
377 SFR ACC,#1 ; ACC=I1/2
378 MOVL P,*XAR2 ; P=I2
379 SUBL ACC,P<<PM ; ACC=(I1-I2)/2
380 MOVL *-SP[TEMP],ACC ; temp=(I1-I2)/2
381 ADDL ACC,P ; ACC=(I1+I2)/2
382
383 SFR ACC,#1 ; ACC=(I1+I2)/4
384 MOVL P,XAR5 ; P=(I3+I4)/2
385 ADDL ACC,P<<PM ; ACC=(I1+I2+I3+I4)/4
TMS320C2000 COFF Assembler PC Version 3.06 Fri Nov 07 10:50:04 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
cfft32c.asm PAGE 8
386 MOVL *XAR6,ACC ; I1'=(I1+I2+I3+I4)/4
387 NOP *0++
388 SUBL ACC,P ; ACC=(I1+I2-I3-I4)/4
389 MOVL *XAR3,ACC ; I3'=(I1+I2-I3-I4)/4
390 NOP *0++
391
392
393 MOVL ACC,*-SP[TEMP] ; ACC=(I1-I2)/2
394 SFR ACC,#1 ; ACC=(I1-I2)/4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -