📄 rxdownconv.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 + -