📄 fft_flp32.asm
字号:
q[j3+=4]=xr23:20; fr17=r2+r5, fr25=r2-r5;;
q[j14+=4]=yr31:28; fr18=r18+r26, fr26=r18-r26;;
q[j15+=4]=xr31:28; fr19=r19+r27, fr27=r19-r27;;
q[j0+=4]=yr19:16;;
q[j1+=4]=xr19:16;;
q[j12+=4]=yr27:24;;
q[j13+=4]=xr27:24;;
//************************ 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
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
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-
//******************************** Epilogue **********************************
_FFTEpilogue:
mPOPQ(yR27:24)
mPOPQ(yR31:28)
mPOPQ(xR27:24)
mPOPQ(xR31:28)
mRETURN
//********************* End Label For Statistical Profiling ******************
_FFT32.end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -