📄 example 3-19.asm
字号:
|| ADD2 .S2X B7,A13,B7 ; X[i]+X[i+N2] & Y[i]+Y[i+N2]
||[!B2] SUB B9,B14,B9 ;* reset load X[i] & Y[i] ptrs
MPYHL .M1 A9,A5,A14 ; (C)*(YT)
|| STW .D2 B7,*B4++[B10] ; XY[i] = X[i]+X[i+N2] & Y[i]+Y[i+N2]
;-
MPYLH .M1 A9,A5,A15 ; (S)*XT
|| LDW .D2 *B9++[B10],B7 ;** X[i] & Y[i]
||[!B2] MV .L2X A2,B2 ;** reset twiddle factor counter
||[!B2] LDW .D1 *A6++[A2],A5 ;** CS = W[IA] & W[IA+1]
|| SUB .L1X B4,A0,A4 ; set store X[i+N2] ptr
|| MPY .M2 B2,1,B0 ;* move to next iteration
||[!B2] SUB A3,A8,A3 ;* reset load X[i+N2] & Y[i+N2] ptrs
;-
MPY .M1 A9,A10,A13 ; (C)*XT
||[!B0] SUB B4,B14,B4 ; reset store X[i] & Y[i] ptrs
||[ B2] SUB B2,1,B2 ;** decrement twiddle factor counter
|| LDW .D1 *A3++[A7],A13 ;** X[i+N2] & Y[i+N2]
MPYH .M1 A9,A10,A14 ; (S)*(YT)
|| SUB2 .S1X A13,B7,A9 ;* XYT = X[i]-X[i+N2] & Y[i]-Y[i+N2]
|| ADD2 .S2X B7,A13,B7 ;* X[i]+X[i+N2] & Y[i]+Y[i+N2]
||[!B2] SUB B9,B14,B9 ;** reset load X[i] & Y[i] ptrs
;-
SUB .S1 A14,A15,A15 ; Y[i+N2] = C*YT - S*XT
|| MPYHL .M1 A9,A5,A14 ;* (C)*(YT)
|| STW .D2 B7,*B4++[B10] ;* XY[i] = X[i]+X[i+N2] & Y[i]+Y[i+N2]
||[!B2] SUB .D1 A3,A8,A3 ;** reset load X[i+N2] & Y[i+N2] ptrs
|| MV .L2X A4,B6 ; set store X[i+N2] ptr
|| MV .S2 B13,B1 ; set inner loop counter
|| MV .L1 A5,A10 ;* move to other file
B .S2 LOOP ; for (i=j; i < N; i += N1)
|| ADD .S1 A14,A13,A13 ; X[i+N2] = C*XT + S*YT
|| MPYLH .M1 A9,A5,A15 ;* (S)*XT
|| LDW .D2 *B9++[B10],B7 ;*** X[i] & Y[i]
||[!B2] MV .L2X A2,B2 ;*** reset twiddle factor counter
||[!B2] LDW .D1 *A6++[A2],A5 ;*** CS = W[IA] & W[IA+1]
|| SUB .L1X B4,A0,A4 ;* set store X[i+N2] ptr
|| MPY .M2 B2,1,B0 ;** move to next iteration
SHR .S2X A13,15,B5 ; scale X[i+N2]
|| SHR .S1 A15,15,A11 ; scale Y[i+N2]
|| MPY .M1 A9,A10,A13 ;* (C)*XT
||[!B0] SUB .L2 B4,B14,B4 ;* reset store X[i] & Y[i] ptrs
||[ B2] SUB .D2 B2,1,B2 ;*** decrement twiddle factor counter
|| LDW .D1 *A3++[A7],A13 ;*** X[i+N2] & Y[i+N2]
|| ADD .L1X B6,2,A12 ; set store Y[i+N2] ptr
LOOP:
STH .D2 B5,*B6 ; X[i+N2] = C*YT + S*XT
|| STH .D1 A11,*A12 ; Y[i+N2] = C*YT - S*XT
|| MPYH .M1 A9,A10,A14 ;* (S)*(YT)
|| SUB2 .S1X A13,B7,A9 ;** XYT = X[i]-X[i+N2] & Y[i]-Y[i+N2]
|| MV .L1 A5,A10 ;** move to other file
|| ADD2 .S2X B7,A13,B7 ;** X[i]+X[i+N2] & Y[i]+Y[i+N2]
||[!B2] SUB .L2 B9,B14,B9 ;*** reset load X[i] & Y[i] ptrs
SUB .D1 A14,A15,A15 ;* Y[i+N2] = C*YT - S*XT
|| MV .L2X A4,B6 ;* set store X[i+N2] ptr
||[ B1] SUB .S2 B1,1,B1 ;** dec i lp cntr
|| MPYHL .M1 A9,A5,A14 ;** (C)*(YT)
|| STW .D2 B7,*B4++[B10] ;** XY[i] = X[i]+X[i+N2] & Y[i]+Y[i+N2]
||[!B2] SUB .S1 A3,A8,A3 ;*** reset load X[i+N2] & Y[i+N2] ptrs
[ B1] B .S2 LOOP ;* for (i=j; i < N; i += N1)
|| ADD .S1 A13,A14,A13 ;* X[i+N2] = C*XT + S*YT
|| MPYLH .M1 A9,A5,A15 ;** (S)*XT
|| SUB .L1X B4,A0,A4 ;** set store X[i+N2] ptr
|| LDW .D2 *B9++[B10],B7 ;**** X[i] & Y[i]
||[!B2] MV .L2X A2,B2 ;**** reset twiddle factor counter
||[!B2] LDW .D1 *A6++[A2],A5 ;**** CS = W[IA] & W[IA+1]
|| MPY .M2 B2,1,B0 ;*** move to next iteration
SHR .S2X A13,15,B5 ;* scale X[i+N2]
|| SHR .S1 A15,15,A11 ;* scale Y[i+N2]
|| ADD .L1X B6,2,A12 ;* set store Y[i+N2] ptr
||[!B0] SUB .L2 B4,B14,B4 ;** reset store X[i] & Y[i] ptrs
|| MPY .M1 A9,A10,A13 ;** (C)*XT
||[ B2] SUB .D2 B2,1,B2 ;**** decrement twiddle factor counter
|| LDW .D1 *A3++[A7],A13 ;**** X[i+N2] & Y[i+N2]
; - - - - - - - - - - - - - - - - - - - ; LOOP ENDS HERE
;-
STH .D2 B5,*B6 ; X[i+N2] = C*YT + S*XT
|| STH .D1 A11,*A12 ; Y[i+N2] = C*YT - S*XT
|| MPYH .M1 A9,A10,A14 ;* (S)*(YT)
|| SUB2 .S1X A13,B7,A9 ;** XYT = X[i]-X[i+N2] & Y[i]-Y[i+N2]
|| MV .L1 A5,A10 ;** move to other file
|| ADD2 .S2X B7,A13,B7 ;** X[i]+X[i+N2] & Y[i]+Y[i+N2]
|| MV .L2 B11,B9 ; set up load ptr to X[0] & Y[0]
;-
SUB .D1 A14,A15,A15 ;* Y[i+N2] = C*YT - S*XT
|| MV .L2X A4,B6 ;* set store X[i+N2] ptr
|| MPYHL .M1 A9,A5,A14 ;** (C)*(YT)
|| STW .D2 B7,*B4++[B10] ;** XY[i] = X[i]+X[i+N2] & Y[i]+Y[i+N2]
|| SHL .S1 A2,1,A2 ; IE << 1
|| SUB .L1 A1,1,A1 ; decrement outer loop counter
;-
ADD .D1 A14,A13,A13 ;* X[i+N2] = C*XT + S*YT
|| MPYLH .M1 A9,A5,A15 ;** (S)*XT
|| SUB .L1X B4,A0,A4 ;** set store X[i+N2] ptr
|| SHR .S1 A15,15,A11 ;* scale Y[i+N2]
SHR .S2X A13,15,B5 ;* scale X[i+N2]
|| ADD .L1X B6,2,A12 ;* set store Y[i+N2] ptr
|| MPY .M1 A9,A10,A13 ;** (C)*XT
||[ A1] B .S1 OUTLOOP ; branch to next stage
;-
STH .D2 B5,*B6 ; X[i+N2] = C*YT + S*XT
|| STH .D1 A11,*A12 ; Y[i+N2] = C*YT - S*XT
|| MPYH .M1 A9,A10,A10 ;* (S)*(YT)
|| SHR .S2 B10,1,B10 ; load index >> 1
|| SHR .S1 A0,1,A0 ; N2 >> 1
|| MV .L1X B12,A6 ; reset W ptr
|| MV .L2X A2,B2 ; reset twiddle factor counter
;-
MV .L2X A4,B6 ;* set store X[i+N2] ptr
|| LDW .D2 *B9++[B10],B7 ; X[i] & Y[i]
|| ADD .L1X A7,B9,A3 ; set up load ptr to X[N2] & Y[N2]
|| LDW .D1 *A6++[A2],A5 ; CS = W[IA] & W[IA+1]
|| SHR .S1 A7,1,A7 ; load index >> 1
||[B2] SUB .S2 B2,1,B2 ; decrement twiddle factor counter
;-
ADD .L1 A10,A13,A13 ;* X[i+N2] = C*XT + S*YT
|| SUB .S1 A14,A15,A15 ;* Y[i+N2] = C*YT - S*XT
||[ A1] LDW .D1 *A3++[A7],A13 ; X[i+N2] & Y[i+N2]
||[!B2] SUB .L2 B9,B14,B9 ; reset load X[i] & Y[i] ptrs
SHR .S2X A13,15,B5 ;* scale X[i+N2]
|| SHR .S1 A15,15,A11 ;* scale Y[i+N2]
|| ADD .L1X B6,2,A12 ;* set store Y[i+N2] ptr
||[!B2] SUB A3,A8,A3 ; reset load X[i+N2] & Y[i+N2] ptrs
;-
STH .D2 B5,*B6 ; X[i+N2] = C*YT + S*XT
|| STH .D1 A11,*A12 ; Y[i+N2] = C*YT - S*XT
|| SHL .S1 A7,1,A0 ; calculating reset offset
|| MV .S2 B11,B4 ; set up store ptr to X[0] & Y[0]
; - - - - - - - - - - - - - - - - - - - ; OUTLOOP ENDS HERE
LDW .D2T2 *+B15[1], B0 ; pop CSR from SP[ 1]
|| MV B15, A15
LDW .D1T1 *+A15[11], A10 ; pop A10 from SP[11]
|| LDW .D2T2 *+B15[10], B10 ; pop B10 from SP[10]
;-
LDW .D1T1 *+A15[9], A11 ; pop A11 from SP[ 9]
|| LDW .D2T2 *+B15[8], B11 ; pop B11 from SP[ 8]
LDW .D1T1 *+A15[7], A12 ; pop A12 from SP[ 7]
|| LDW .D2T2 *+B15[6], B12 ; pop B12 from SP[ 6]
LDW .D1T1 *+A15[5], A13 ; pop A13 from SP[ 5]
|| LDW .D2T2 *+B15[4], B13 ; pop B13 from SP[ 4]
;-
LDW .D2T2 *+B15[2], B14 ; pop B14 from SP[ 2]
|| LDW .D1T1 *+A15[3], A14 ; pop A14 from SP[ 3]
|| B B3
LDW .D2T1 *++B15[12],A15 ; pop A15 from SP[12]
MVC B0, CSR
NOP 3
;-
* ========================================================================= *
* End of file: dsp_radix2.asm *
* ------------------------------------------------------------------------- *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -