⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fft_flp32.asm

📁 ADI TS系列的DSP FFT源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	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 + -