Tool/software: Code Composer Studio
Hi,
I worked on RFFT code. Can you explain me how below code reversed the bits......
I am confused with the code.
_rfft_adc_f32_Stages1and2and3andBitReverse:
;----------------------------------------------------------------------
; Save all save-on-entry registers used
;----------------------------------------------------------------------
PUSH XAR1
PUSH XAR2
PUSH XAR3
MOV32 *SP++,R4H
MOV32 *SP++,R5H
MOV32 *SP++,R6H
MOV32 *SP++,R7H
ADDB SP,#14h
MOVL XAR2,*+XAR4[0] ; &Inbuf
MOVL XAR5,*+XAR4[2] ; &Outbuf
SUBB XAR5, #2
MOVL XAR4, XAR5
MOVL XAR5,*+XAR4[2] ; &Outbuf
MOVL XAR3,*+XAR4[2]
ADDB XAR3,#8 ; &Outbuf[4]
MOVL XAR7,*+XAR4[4] ; &CosSinbuf
MOV AR0,#0Ah
MOV AH,*+XAR4[AR0] ; FFT SIZE
LSR AH,1 ; FFT SIZE/2 - for 16-bit input data
MOV AR0,AH
; LSR AH,3
LSR AH,2 ; for 16-bit input data
SUBB AH,#1 ; (Size / 8) - 1
MOVL XAR1,#0000h ; index if memory is not aligned
RPTB _rfft_32_Last, AH
;--------------------------------------------------------------------------------
; Input buffer must be aligned for this code
;--------------------------------------------------------------------------------
NOP *,ARP2
MOVI32 R4H, 0x39800801
UI16TOF32 R0H, *BR0++ ;I1 load
UI16TOF32 R1H, *BR0++ ;I2 load
MPYF32 R0H, R0H, R4H ;I1 scale
UI16TOF32 R2H, *BR0++ ;I3 load
MPYF32 R1H, R1H, R4H ;I2 scale
|| MOV32 *-SP[I1], R0H ;I1 save
UI16TOF32 R0H, *BR0++ ;I4 load
MPYF32 R2H, R2H, R4H ;I3 scale
|| MOV32 *-SP[I2], R1H ;I2 save
UI16TOF32 R1H, *BR0++ ;I5 load
MPYF32 R0H, R0H, R4H ;I4 scale
|| MOV32 *-SP[I3], R2H ;I3 save
UI16TOF32 R2H, *BR0++ ;I6 load
MPYF32 R1H, R1H, R4H ;I5 scale
|| MOV32 *-SP[I4], R0H ;I4 save
UI16TOF32 R0H, *BR0++ ;I7 load
MPYF32 R2H, R2H, R4H ;I6 scale
|| MOV32 *-SP[I5], R1H ;I5 save
UI16TOF32 R1H, *BR0++ ;I8 load
MPYF32 R0H, R0H, R4H ;I7 scale
|| MOV32 *-SP[I6], R2H ;I6 save
MPYF32 R1H, R1H, R4H ;I8 scale
MOV32 *-SP[I7], R0H ;I7 save
MOV32 *-SP[I8], R1H ;I8 save
Nikhil
