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

📄 rxdownconv.asm

📁 MIMO 2x2接收端选择全系统仿真代码
💻 ASM
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen                                    PC Version 4.36 *
;* Date/Time created: Wed Jun 01 13:32:14 2005                                *
;******************************************************************************

;******************************************************************************
;* GLOBAL FILE PARAMETERS                                                     *
;*                                                                            *
;*   Architecture      : TMS320C671x                                          *
;*   Optimization      : Enabled at level 3                                   *
;*   Optimizing for    : Speed                                                *
;*                       Based on options: -o3, no -ms                        *
;*   Endian            : Little                                               *
;*   Interrupt Thrshld : Disabled                                             *
;*   Memory Model      : Large                                                *
;*   Calls to RTS      : Far                                                  *
;*   Pipelining        : Enabled                                              *
;*   Speculative Load  : Disabled                                             *
;*   Memory Aliases    : Presume are aliases (pessimistic)                    *
;*   Debug Info        : COFF Debug                                           *
;*                                                                            *
;******************************************************************************

	.asg	A15, FP
	.asg	B14, DP
	.asg	B15, SP
	.global	$bss

	.file	"rxdownconv.c"
	.global	_DownConvState
_DownConvState:	.usect	".far",12,4
	.sym	_DownConvState,_DownConvState, 8, 2, 96, $$fake1
;	c:\ti\c6000\cgtools\bin\opt6x.exe -v6710 -s -O3 C:\DOCUME~1\SBPRJ-~1\LOCALS~1\Temp\TI1720_2 C:\DOCUME~1\SBPRJ-~1\LOCALS~1\Temp\TI1720_5 -w C:/ti/myprojects/mimo/receiver/Debug 

	.sect	".text"
	.global	_downconvert
	.sym	_downconvert,_downconvert, 32, 2, 0
	.func	85

;******************************************************************************
;* FUNCTION NAME: _downconvert                                                *
;*                                                                            *
;*   Regs Modified     : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;*                           B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,SP               *
;*   Regs Used         : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,B0,B1, *
;*                           B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,DP,SP            *
;*   Local Frame Size  : 0 Args + 0 Auto + 28 Save = 28 byte                  *
;******************************************************************************

;******************************************************************************
;*                                                                            *
;* Using -g (debug) with optimization (-o3) may disable key optimizations!    *
;*                                                                            *
;******************************************************************************
_downconvert:
;** --------------------------------------------------------------------------*
	.line	4
	.sym	_pInBuffer,4, 19, 17, 32
	.sym	_fCplxTempBuffer1,20, 24, 17, 32, $$fake0
	.sym	_fCplxTempBuffer2,6, 24, 17, 32, $$fake0
	.sym	_pDownConvState,22, 24, 17, 32, $$fake1
	.sym	_uiInBuffSize,8, 14, 17, 32
	.sym	C$2,0, 6, 4, 32
	.sym	C$3,0, 6, 4, 32
	.sym	C$4,0, 6, 4, 32
	.sym	C$5,0, 4, 4, 32
	.sym	C$6,1, 14, 4, 32
	.sym	_omega,4, 6, 4, 32
	.sym	_sin_n,0, 6, 4, 32
	.sym	_cos_n,0, 6, 4, 32
	.sym	_n,10, 14, 4, 32
	.sym	_uiInBuffSize,13, 14, 4, 32
	.sym	_pInBuffer,27, 19, 4, 32
	.sym	_fCplxTempBuffer1,12, 24, 4, 32, $$fake0
	.sym	_fCplxTempBuffer2,26, 24, 4, 32, $$fake0
	.sym	_pDownConvState,11, 24, 4, 32, $$fake1
	.sym	L$1,1, 4, 4, 32
	.sym	U$45,0, 22, 4, 32
	.sym	U$50,0, 22, 4, 32
	.sym	U$61,0, 22, 4, 32
	.sym	U$65,0, 22, 4, 32
	.sym	U$66,22, 22, 4, 32
	.sym	U$62,20, 22, 4, 32
	.sym	U$51,7, 22, 4, 32
	.sym	U$46,0, 22, 4, 32
	.sym	U$41,21, 19, 4, 32
	.sym	K$33,9, 14, 4, 32
	.sym	U$21,8, 6, 4, 32
	.sym	K$29,6, 22, 4, 32
;** 106	-----------------------    n = pDownConvState->unPhaseIndex;
;** 110	-----------------------    omega = pDownConvState->fInterFreq/96000.0F;
;** 112	-----------------------    if ( !(C$6 = uiInBuffSize>>1) ) goto g4;

           STW     .D2T2   B11,*SP--(32)     ; |88| 
||         MV      .S1X    SP,A9             ; |88| 

           STW     .D2T2   B10,*+SP(28)

           STW     .D1T1   A12,*-A9(16)
||         STW     .D2T2   B3,*+SP(24)

           STW     .D2T1   A11,*+SP(12)
           STW     .D2T1   A10,*+SP(8)
           STW     .D1T1   A13,*-A9(12)

           MV      .S1X    B4,A12            ; |88| 
||         MV      .S2X    A6,B10            ; |88| 

           MV      .S2X    A4,B11            ; |88| 
||         MV      .S1X    B6,A11            ; |88| 
||         MV      .D1     A8,A13            ; |88| 

	.line	22
           LDW     .D1T1   *+A11(4),A10      ; |106| 
	.line	26
           MVKL    .S1     __divf,A0         ; |110| 
           MVKH    .S1     __divf,A0         ; |110| 
           CALL    .S2X    A0                ; |110| 
           LDW     .D1T1   *A11,A4           ; |110| 
           MVKL    .S2     0x47bb8000,B4     ; |110| 
           MVKL    .S2     RL0,B3            ; |110| 
           MVKH    .S2     0x47bb8000,B4     ; |110| 
           MVKH    .S2     RL0,B3            ; |110| 
RL0:       ; CALL OCCURS                     ; |110| 
	.line	28
           SHRU    .S1     A13,1,A1          ; |112| 
   [!A1]   B       .S1     L4                ; |112| 
           NOP             5
           ; BRANCH OCCURS                   ; |112| 
;** --------------------------------------------------------------------------*
;**  	-----------------------    U$21 = omega*2048.0F;
;**  	-----------------------    K$33 = 0xfffffe00u;
;**  	-----------------------    U$41 = &pInBuffer[-2];
;**  	-----------------------    U$45 = fCplxTempBuffer1->pIBuffer;
;**  	-----------------------    U$46 = U$45;
;**  	-----------------------    U$50 = fCplxTempBuffer1->pQBuffer;
;**  	-----------------------    U$51 = U$50;
;**  	-----------------------    U$61 = fCplxTempBuffer2->pIBuffer;
;**  	-----------------------    U$62 = U$61;
;**  	-----------------------    U$65 = fCplxTempBuffer2->pQBuffer;
;**  	-----------------------    U$66 = U$65;
;** 114	-----------------------    L$1 = C$6;
;**  	-----------------------    K$29 = &cos_table[0];
;**  	-----------------------    #pragma MUST_ITERATE(1, 2147483647, 1)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**	-----------------------g3:
;** 119	-----------------------    C$5 = (int)((float)n*U$21);
;** 119	-----------------------    cos_n = K$29[_extu(C$5, 21u, 21u)];
;** 120	-----------------------    sin_n = K$29[_extu(C$5+K$33, 21u, 21u)];
;** 122	-----------------------    C$4 = (float)*(U$41 += 2);
;** 122	-----------------------    *U$46++ = C$4*cos_n;
;** 123	-----------------------    C$2 = -sin_n;
;** 123	-----------------------    *U$51++ = C$2*C$4;
;** 124	-----------------------    C$3 = (float)U$41[1];
;** 124	-----------------------    *U$62++ = C$3*cos_n;
;** 125	-----------------------    *U$66++ = C$2*C$3;
;** 127	-----------------------    ++n;
;** 128	-----------------------    if ( --L$1 ) goto g3;

           LDW     .D1T1   *+A12(4),A7
||         LDW     .D2T2   *B10,B4
||         ZERO    .S2     B5

           LDW     .D2T2   *+B10(4),B6
||         LDW     .D1T1   *A12,A0
||         MVKH    .S2     0x45000000,B5

           MVK     .S1     0xfffffe00,A9
||         MPYSP   .M1X    B5,A4,A8
||         SUB     .D2     B11,4,B5

	.line	30
           MVC     .S2     CSR,B9

           MVK     .S2     0x1,B0            ; init prolog collapse predicate
||         ADD     .D1     1,A1,A1
||         MVKL    .S1     _cos_table,A6
||         AND     .L2     -2,B9,B7

           SUB     .D1     A10,1,A5
||         SUB     .L1     A1,1,A2
||         MVKH    .S1     _cos_table,A6
||         MVC     .S2     B7,CSR            ; interrupts off

;*----------------------------------------------------------------------------*
;*   SOFTWARE PIPELINE INFORMATION
;*
;*      Loop source line                 : 112
;*      Loop opening brace source line   : 113
;*      Loop closing brace source line   : 128
;*      Known Minimum Trip Count         : 1
;*      Known Max Trip Count Factor      : 1
;*      Loop Carried Dependency Bound(^) : 13
;*      Unpartitioned Resource Bound     : 4
;*      Partitioned Resource Bound(*)    : 4
;*      Resource Partition:
;*                                A-side   B-side
;*      .L units                     3        1     
;*      .S units                     2        2     
;*      .D units                     4*       4*    
;*      .M units                     3        2     
;*      .X cross paths               2        2     
;*      .T address paths             4*       4*    
;*      Long read paths              2        2     
;*      Long write paths             0        0     
;*      Logical  ops (.LS)           0        1     (.L or .S unit)
;*      Addition ops (.LSD)          3        1     (.L or .S or .D unit)
;*      Bound(.L .S .LS)             3        2     
;*      Bound(.L .S .D .LS .LSD)     4*       3     
;*
;*      Searching for software pipeline schedule at ...
;*         ii = 13 Did not find schedule
;*         ii = 14 Schedule found with 2 iterations in parallel
;*      Done
;*
;*      Collapsed epilog stages     : 1
;*      Collapsed prolog stages     : 1
;*      Minimum required memory pad : 0 bytes
;*
;*      For further improvement on this loop, try option -mh4
;*
;*      Minimum safe trip count     : 1
;*----------------------------------------------------------------------------*
L1:    ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L2:    ; PIPED LOOP KERNEL

           ADD     .L1     1,A5,A5           ; |127| <0,13> 
|| [!B0]   LDW     .D1T1   *+A6[A4],A4       ; |119| <0,13>  ^ 
||         EXTU    .S1     A3,21,21,A3       ; |120| <0,13> 

           INTSP   .L2     B8,B8             ; |124| <0,14> 
|| [!B0]   LDW     .D1T1   *+A6[A3],A3       ; |120| <0,14>  ^ 
||         INTSPU  .L1     A5,A3             ; |119| <1,0> 

           INTSP   .L1X    B7,A10            ; |122| <0,15> 
           NOP             1
           ZERO    .D2     B7                ; |123| <0,17> 

           SET     .S2     B7,31,31,B7       ; |123| <0,18> 
||         MPYSP   .M2X    A4,B8,B7          ; |124| <0,18> 
||         MPYSP   .M1     A8,A3,A3          ; |119| <1,4> 

           MPYSP   .M1     A4,A10,A3         ; |122| <0,19>  ^ 
||         XOR     .S2X    A3,B7,B7          ; |123| <0,19>  ^ 

   [ A1]   SUB     .D1     A1,1,A1           ; |128| <0,20> 
||         MPYSP   .M2     B8,B7,B8          ; |125| <0,20> 
||         MPYSP   .M1X    A10,B7,A3         ; |123| <0,20>  ^ 

   [ A1]   B       .S2     L2                ; |128| <0,21> 

   [ A2]   LDH     .D2T2   *++B5(4),B7       ; |122| <1,8> 
||         SPTRUNC .L1     A3,A3             ; |119| <1,8> 

   [!B0]   STW     .D1T1   A3,*A0++          ; |122| <0,23>  ^ 
|| [ A2]   LDH     .D2T2   *+B5(2),B8        ; |124| <1,9> 

   [!B0]   STW     .D1T1   A3,*A7++          ; |123| <0,24>  ^ 
   [!B0]   STW     .D2T2   B7,*B4++          ; |124| <0,25>  ^ 

   [ B0]   SUB     .S2     B0,1,B0           ; <0,26> 
|| [ A2]   SUB     .D1     A2,1,A2           ; <0,26> 
|| [!B0]   STW     .D2T2   B8,*B6++          ; |125| <0,26>  ^ 
||         EXTU    .S1     A3,21,21,A4       ; |119| <1,12> 
||         ADD     .L1     A9,A3,A3          ; |120| <1,12> 

;** --------------------------------------------------------------------------*
L3:    ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*

           MV      .D1     A5,A10
||         MVC     .S2     B9,CSR            ; interrupts on

;**	-----------------------g4:
;** 129	-----------------------    pDownConvState->unPhaseIndex = n%96u;
;** 129	-----------------------    return;
;** --------------------------------------------------------------------------*
L4:    
	.line	45
           MVKL    .S1     __remu,A0         ; |129| 
           MVKH    .S1     __remu,A0         ; |129| 
           CALL    .S2X    A0                ; |129| 
           MVKL    .S2     RL1,B3            ; |129| 
           MVK     .S2     0x60,B4           ; |129| 
           MVKH    .S2     RL1,B3            ; |129| 
           MV      .D1     A10,A4            ; |129| 
           NOP             1
RL1:       ; CALL OCCURS                     ; |129| 
           STW     .D1T1   A4,*+A11(4)       ; |129| 
	.line	86
           LDW     .D2T2   *+SP(24),B3       ; |170| 
           MV      .S1X    SP,A9             ; |170| 
           LDW     .D2T2   *+SP(28),B10      ; |170| 
           NOP             2

           RET     .S2     B3                ; |170| 
||         LDDW    .D1T1   *+A9(16),A13:A12  ; |170| 

           LDW     .D2T2   *++SP(32),B11     ; |170| 
||         LDDW    .D1T1   *+A9(8),A11:A10   ; |170| 

           NOP             4
           ; BRANCH OCCURS                   ; |170| 
	.endfunc	170,00c083c00h,32


;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES                                              *
;******************************************************************************
	.global	_cos_table
	.global	__divf
	.global	__remu

;******************************************************************************
;* TYPE INFORMATION                                                           *
;******************************************************************************
	.sym	_Int16, 0, 3, 13, 16
	.stag	$$fake0, 64
	.member	_pIBuffer, 0, 22, 8, 32
	.member	_pQBuffer, 32, 22, 8, 32
	.eos
	.sym	_typCOM_fCPLXBUFF, 0, 8, 13, 64,$$fake0
	.stag	$$fake1, 96
	.member	_fInterFreq, 0, 6, 8, 32
	.member	_unPhaseIndex, 32, 14, 8, 32
	.member	_fPhaseDeci, 64, 6, 8, 32
	.eos
	.sym	_typRX_DOWNCONVSTATE, 0, 8, 13, 96,$$fake1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -