?? fft32.asm
字號:
//************************ Stages 3 to Log2(N)-1 *******************************
j0=j31+j6; k5=k31+0;;
.align_code 4;
_StageLoop:
yr3:0=q[j0+=4]; k3=k5 and k4;; // F1, K1
xr3:0=q[j0+=4]; r5:4=l[k7+k3];; // F2, K2
LC0=k10; k5=k5+k9;; // K3, M1
yr11:8=q[j0+=4]; k3=k5 and k4; fr6=r2*r4;; // F1+, K1+
xr11:8=q[j0+=4]; r13:12=l[k7+k3]; fr7=r3*r5;; // F2+, K2+, M2
fr14=r2*r5;; // M3
j1=j31+j5; k5=k5+k9; fr6=r10*r12; fr16=r6-r7;; // K3+, M1+, A1
yr23:20=q[j0+=4]; k3=k5 and k4; fr15=r3*r4;; // F1++, K1++, M4
xr23:20=q[j0+=4]; r5:4=l[k7+k3]; fr7=r11*r13;; // F2++, K2++, M2+
fr14=r10*r13; fr17=r14+r15;; // M3+, A2
j2=j1+j11; k5=k5+k9; fr6=r22*r4; fr18=r6-r7;; // K3++, M1++, A1+
yr31:28=q[j0+=4]; k3=k5 and k4; fr15=r11*r12; fr24=r0+r16, fr26=r0-r16;; // F1+++, K1+++, M4+, A3
xr31:28=q[j0+=4]; r13:12=l[k7+k3]; fr7=r23*r5; fr25=r1+r17, fr27=r1-r17;; // F2+++, K2+++, M2++, A4
q[j1+=4]=r25:24; fr14=r22*r5; fr19=r14+r15;; // S1, M3++, A2+
.align_code 4;
_BflyLoop:
q[j2+=4]=r27:26; k5=k5+k9; fr6=r30*r12; fr16=r6-r7;; // S2----,K3-, M1-, A1--
yr3:0=q[j0+=4]; k3=k5 and k4; fr15=r23*r4; fr24=r8+r18, fr26=r8-r18;; // F1, K1, M4--, A3---
xr3:0=q[j0+=4]; r5:4=l[k7+k3]; fr7=r31*r13; fr25=r9+r19, fr27=r9-r19;; // F2, K2, M2-, A4---
q[j1+=4]=r25:24; fr14=r30*r13; fr17=r14+r15;; // S1---, M3-, A2--
q[j2+=4]=r27:26; k5=k5+k9; fr6=r2*r4; fr18=r6-r7;; // S2---, K3, M1, A1-
yr11:8=q[j0+=4]; k3=k5 and k4; fr15=r31*r12; fr24=r20+r16, fr26=r20-r16;; // F1+, K1+, M4-, A3--
xr11:8=q[j0+=4]; r13:12=l[k7+k3]; fr7=r3*r5; fr25=r21+r17, fr27=r21-r17;; // F2+, K2+, M2, A4--
q[j1+=4]=r25:24; fr14=r2*r5; fr19=r14+r15;; // S1--, M3, A2-
q[j2+=4]=r27:26; k5=k5+k9; fr6=r10*r12; fr16=r6-r7;; // S2--, K3+, M1+, A1
yr23:20=q[j0+=4]; k3=k5 and k4; fr15=r3*r4; fr24=r28+r18, fr26=r28-r18;; // F1++, K1++, M4, A3-
xr23:20=q[j0+=4]; r5:4=l[k7+k3]; fr7=r11*r13; fr25=r29+r19, fr27=r29-r19;; // F2++, K2++, M2+, A4-
q[j1+=4]=r25:24; fr14=r10*r13; fr17=r14+r15;; // S1-, M3+, A2
q[j2+=4]=r27:26; k5=k5+k9; fr6=r22*r4; fr18=r6-r7;; // S2-, K3++, M1++, A1+
yr31:28=q[j0+=4]; k3=k5 and k4; fr15=r11*r12; fr24=r0+r16, fr26=r0-r16;; // F1+++, K1+++, M4+, A3
xr31:28=q[j0+=4]; r13:12=l[k7+k3]; fr7=r23*r5; fr25=r1+r17, fr27=r1-r17;; // F2+++, K2+++, M2++, A4
.align_code 4;
if NLC0E, jump _BflyLoop;
q[j1+=4]=r25:24; fr14=r22*r5; fr19=r14+r15;; // S1, M3++, A2+
q[j2+=4]=r27:26; fr6=r30*r12; fr16=r6-r7;; // S2----, M1-, A1--
j0=j31+j5; fr15=r23*r4; fr24=r8+r18, fr26=r8-r18;; // M4--, A3---, swap ping-pong pointers
j5=j31+j6; fr7=r31*r13; fr25=r9+r19, fr27=r9-r19;; // M2-, A4---
q[j1+=4]=r25:24; fr14=r30*r13; fr17=r14+r15;; // S1---, M3-, A2--
q[j2+=4]=r27:26; fr18=r6-r7;; // S2---, A1-
j6=j31+j0; fr15=r31*r12; fr24=r20+r16, fr26=r20-r16;; // M4-, A3--
fr25=r21+r17, fr27=r21-r17;; // A4--
q[j1+=4]=r25:24; fr19=r14+r15;; // S1--, A2-
q[j2+=4]=r27:26; fr24=r28+r18, fr22=r28-r18;; // S2-- A3-
j0=j31+j6; fr25=r29+r19, fr23=r29-r19;; // A4-
q[j1+=4]=r25:24; k5=k31+0;; // S1-
.align_code 4;
if NLC1E, jump _StageLoop;
q[j2+=4]=r23:22; k4=ashiftr k4;; // S2-, shift the mask
//******************************* Last stage *********************************
k9 = ashiftr k9;;//in this manner any MAX_FFT_SIZE can be used
yr3:0=q[j0+=4]; yr5:4 = l[k7+=k9];; // F1,
xr3:0=q[j0+=4]; xr5:4=l[k7+=k9];; // F2, K2
j1=j31+j7; fr6=r2*r4; LC0=k10;; // M1
// j1=j11+j7; fr6=r2*r4; LC0=k10;;
yr11:8=q[j0+=4]; yr13:12=l[k7+=k9];; // F1+
xr11:8=q[j0+=4]; xr13:12=l[k7+=k9]; fr7=r3*r5;; // F2+, K2+, M2
j2=j1+j11; fr14=r2*r5;; // M3
// j2=j7+j11; fr14=r2*r5;;
fr6=r10*r12; fr16=r6-r7;; // M1+, A1
yr23:20=q[j0+=4]; yr5:4=l[k7+=k9]; fr15=r3*r4;; // F1++, M4
xr23:20=q[j0+=4]; xr5:4=l[k7+=k9]; fr7=r11*r13;; // F2++, K2++, M2+
fr14=r10*r13; fr17=r14+r15;; // M3+, A2
fr6=r22*r4; fr18=r6-r7;; // M1++, A1+
yr31:28=q[j0+=4]; yr13:12=l[k7+=k9];fr15=r11*r12; fr24=r0+r16, fr26=r0-r16;; // F1+++, M4+, A3
xr31:28=q[j0+=4]; xr13:12=l[k7+=k9]; fr7=r23*r5; fr25=r1+r17, fr27=r1-r17;; // F2+++, K2+++, M2++, A4
q[j1+=4]=r25:24; fr14=r22*r5; fr19=r14+r15;; // S1, M3++, A2+
.align_code 4;
_BflyLastLoop:
q[j2+=4]=r27:26; fr6=r30*r12; fr16=r6-r7;; // S2----, M1-, A1--
yr3:0=q[j0+=4]; yr5:4=l[k7+=k9]; fr15=r23*r4; fr24=r8+r18, fr26=r8-r18;; // F1, M4--, A3---
xr3:0=q[j0+=4]; xr5:4=l[k7+=k9]; fr7=r31*r13; fr25=r9+r19, fr27=r9-r19;; // F2, K2, M2-, A4---
q[j1+=4]=r25:24; fr14=r30*r13; fr17=r14+r15;; // S1---, M3-, A2--
q[j2+=4]=r27:26; fr6=r2*r4; fr18=r6-r7;; // S2---, M1, A1-
yr11:8=q[j0+=4]; yr13:12=l[k7+=k9];fr15=r31*r12; fr24=r20+r16, fr26=r20-r16;; // F1+, M4-, A3--
xr11:8=q[j0+=4]; xr13:12=l[k7+=k9];fr7=r3*r5; fr25=r21+r17, fr27=r21-r17;; // F2+, K2+, M2, A4--
q[j1+=4]=r25:24; fr14=r2*r5; fr19=r14+r15;; // S1--, M3, A2-
q[j2+=4]=r27:26; fr6=r10*r12; fr16=r6-r7;; // S2--, M1+, A1
yr23:20=q[j0+=4]; yr5:4=l[k7+=k9]; fr15=r3*r4; fr24=r28+r18, fr26=r28-r18;; // F1++, M4, A3-
xr23:20=q[j0+=4]; xr5:4=l[k7+=k9]; fr7=r11*r13; fr25=r29+r19, fr27=r29-r19;; // F2++, K2++, M2+, A4-
q[j1+=4]=r25:24; fr14=r10*r13; fr17=r14+r15;; // S1-, M3+, A2
q[j2+=4]=r27:26; fr6=r22*r4; fr18=r6-r7;; // S2-, M1++, A1+
yr31:28=q[j0+=4];yr13:12=l[k7+=k9]; fr15=r11*r12; fr24=r0+r16, fr26=r0-r16;; // F1+++, M4+, A3
xr31:28=q[j0+=4];xr13:12=l[k7+=k9]; fr7=r23*r5; fr25=r1+r17, fr27=r1-r17;; // F2+++, K2+++, M2++, A4
.align_code 4;
if NLC0E, jump _BflyLastLoop;
q[j1+=4]=r25:24; fr14=r22*r5; fr19=r14+r15;; // S1, M3++, A2+
q[j2+=4]=r27:26; fr6=r30*r12; fr16=r6-r7;; // S2----, M1-, A1--
fr15=r23*r4; fr24=r8+r18, fr26=r8-r18;; // M4--, A3---
fr7=r31*r13; fr25=r9+r19, fr27=r9-r19;; // M2-, A4---
q[j1+=4]=r25:24; fr14=r30*r13; fr17=r14+r15;; // S1---, M3-, A2--
q[j2+=4]=r27:26; fr18=r6-r7;; // S2---, A1-
fr15=r31*r12; fr24=r20+r16, fr26=r20-r16;; // M4-, A3--
fr25=r21+r17, fr27=r21-r17;; // A4--
q[j1+=4]=r25:24; fr19=r14+r15;; // S1--, A2-
q[j2+=4]=r27:26;; // S2--
fr24=r28+r18, fr26=r28-r18;; // A3-
fr25=r29+r19, fr27=r29-r19;; // A4-
q[j1+=4]=r25:24;; // S1-
q[j2+=4]=r27:26;; // S2-
////for FFT shift by Dengdan/////
j0=j7;j1=j7+FFT_size;;
xr0=j1;;
k0=xr0;;
j1=j0;k1=k0;;
lc0=FFT_size>>4;;
_move_data16:
xr3:0=q[j1+=4]; yr3:0=q[k1+=4];;
xr7:4=q[j1+=4]; yr7:4=q[k1+=4];;
xr11:8=q[j1+=4];yr11:8=q[k1+=4];;
xr15:12=q[j1+=4];yr15:12=q[k1+=4];;
q[j0+=4]=yr3:0;q[k0+=4]=xr3:0;;
q[j0+=4]=yr7:4;q[k0+=4]=xr7:4;;
q[j0+=4]=yr11:8;q[k0+=4]=xr11:8;;
.align_code 4;
if nlc0e,jump _move_data16; q[j0+=4]=yr15:12;q[k0+=4]=xr15:12;;
//******************************** Epilogue **********************************
_FFTEpilogue:
/*
mPOPQ(yR27:24)
mPOPQ(yR31:28)
mPOPQ(xR27:24)
mPOPQ(xR31:28)
mRETURN
*/
j27=j27-4 ; k27=k27-4 ;;
j11:8=q[j27+=-4] ; k11:8=q[k27+=-4] ;;
j3:0=q[j27+=-4] ; k3:0=q[k27+=-4] ;;
xr23:20=q[j27+=-4] ; yr23:20=q[k27+=-4] ;;
xr19:16=q[j27+=-4] ; yr19:16=q[k27+=-4] ;;
xr15:12=q[j27+=-4] ; yr15:12=q[k27+=-4] ;;
xr11:8=q[j27+=-4] ; yr11:8=q[k27+=-4] ;;
xr7:4=q[j27+=-4] ; yr7:4=q[k27+=-4] ;;
xr3:0=q[j27+=-4] ; yr3:0=q[k27+=-4] ;;
jb0= [j27+=-4] ; kb0= [k27+=-4] ;;
jl0= [j27+=-4] ; kl0= [k27+=-4] ;;
lc1= [j27+=-4] ; yr0= [k27+=-4] ;;
lc0= [j27+=-4] ; yr0= [k27+=-4] ;;
cjmp= [j27+= 0] ; yr0= [k27+= 0] ;;
.align_code 4;
cjmp(abs);;
//********************* End Label For Statistical Profiling ******************
_FFT32.end:
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //
// >> >> //
// >> BEGIN FUNCTION >> //
// ~~~
// ~~~ COMMENT BLOCK
// ~~~
// -------- LOCAL VARIABLE DECLARATIONS -------------------------------------- //
// -------- CODE ------------------------------------------------------------- //
// << END FUNCTION << //
// << << //
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< //
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -