📄 chan_estimation.asm
字号:
.line 5
MVC .S2 CSR,B11
LDW .D2T2 *+B8(4),B5 ; |87| (P) <0,0>
|| AND .S2 -2,B11,B4
LDW .D1T1 *+A0(4),A4 ; |87| (P) <0,1>
|| LDW .D2T2 *B8++(8),B4 ; |87| (P) <0,1>
|| MVC .S2 B4,CSR ; interrupts off
LDW .D1T1 *A0++(8),A5 ; |87| (P) <0,2>
ADD .S1X 4,B3,A3
ADD .S2 3,B6,B0
|| LDW .D2T2 *+B8(4),B10 ; |87| (P) <1,0>
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 85
;* Loop opening brace source line : 86
;* Loop closing brace source line : 89
;* Known Minimum Trip Count : 124
;* Known Maximum Trip Count : 124
;* Known Max Trip Count Factor : 124
;* Loop Carried Dependency Bound(^) : 4
;* Unpartitioned Resource Bound : 3
;* Partitioned Resource Bound(*) : 3
;* Resource Partition:
;* A-side B-side
;* .L units 3* 3*
;* .S units 1 0
;* .D units 3* 3*
;* .M units 3* 3*
;* .X cross paths 2 2
;* .T address paths 3* 3*
;* Long read paths 0 0
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 0 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 2 2
;* Bound(.L .S .D .LS .LSD) 3* 3*
;*
;* Searching for software pipeline schedule at ...
;* ii = 4 Schedule found with 8 iterations in parallel
;* Done
;*
;* Collapsed epilog stages : 7
;* Prolog not entirely removed
;* Collapsed prolog stages : 4
;*
;* Minimum required memory pad : 0 bytes
;*
;* For further improvement on this loop, try option -mh56
;*
;* Minimum safe trip count : 3
;*----------------------------------------------------------------------------*
L4: ; PIPED LOOP PROLOG
SUB .S1X B0,6,A1
|| LDW .D2T2 *B8++(8),B5 ; |87| (P) <1,1>
|| LDW .D1T1 *+A0(4),A5 ; |87| (P) <1,1>
MPYSP .M1X B4,A4,A6 ; |88| (P) <0,6>
|| LDW .D1T1 *A0++(8),A5 ; |87| (P) <1,2>
|| MPYSP .M2X B5,A4,B6 ; |87| (P) <0,6>
ZERO .D2 B7 ; |83|
|| MPYSP .M1X B5,A5,A7 ; |88| (P) <0,7>
|| B .S1 L5 ; |89| (P) <0,23>
|| MPYSP .M2X B4,A5,B4 ; |87| (P) <0,7>
ZERO .D1 A4 ; |83|
|| MVK .S2 0x4,B2 ; init prolog collapse predicate
|| SUB .L2 B0,3,B1
|| SUB .S1X B0,5,A2
|| LDW .D2T2 *+B8(4),B10 ; |87| (P) <2,0>
;** --------------------------------------------------------------------------*
L5: ; PIPED LOOP KERNEL
[!B2] ADDSP .L2 B4,B7,B7 ; |87| <0,25> ^
|| [!B2] ADDSP .L1 A5,A4,A4 ; |88| <0,25> ^
|| MPYSP .M1 A6,A6,A5 ; |88| <1,21>
|| [ A2] LDW .D2T2 *B8++(8),B5 ; |87| <6,1>
|| [ A2] LDW .D1T1 *+A0(4),A5 ; |87| <6,1>
[ B0] SUB .D2 B0,1,B0 ; |89| <1,22>
|| MPYSP .M2X B10,A5,B6 ; |87| <5,6>
|| MPYSP .M1X B5,A5,A6 ; |88| <5,6>
|| [ A2] LDW .D1T1 *A0++(8),A5 ; |87| <6,2>
[ B2] SUB .S2 B2,1,B2 ; <0,27>
|| [ B0] B .S1 L5 ; |89| <1,23>
|| [ B1] LDW .D2T2 *++B3(8),B6 ; |87| <4,11>
|| [ B1] LDW .D1T1 *++A3(8),A5 ; |88| <4,11>
|| ADDSP .L1 A6,A7,A8 ; |88| <4,11>
|| SUBSP .L2 B4,B6,B9 ; |87| <4,11>
|| MPYSP .M2X B5,A5,B4 ; |87| <5,7>
|| MPYSP .M1X B10,A5,A7 ; |88| <5,7>
[ B1] SUB .S2 B1,1,B1 ; <0,28>
|| [ A2] SUB .D1 A2,1,A2 ; <0,28>
|| [ A1] SUB .S1 A1,1,A1 ; <0,28>
|| MPYSP .M2 B5,B5,B4 ; |87| <2,20>
|| SUBSP .L2 B6,B9,B5 ; |87| <3,16>
|| SUBSP .L1 A5,A8,A6 ; |88| <3,16>
|| [ A1] LDW .D2T2 *+B8(4),B10 ; |87| <7,0>
;** --------------------------------------------------------------------------*
L6: ; PIPED LOOP EPILOG
NOP 3
MV .S1X B7,A5
|| MVC .S2 B11,CSR ; interrupts on
.line 12
ADDSP .L1 A4,A5,A4 ; |90|
.line 13
LDW .D2T2 *+SP(8),B3 ; |91|
LDW .D2T2 *+SP(12),B10 ; |91|
LDW .D2T2 *++SP(16),B11 ; |91|
NOP 2
RET .S2 B3 ; |91|
NOP 5
; BRANCH OCCURS ; |91|
.endfunc 91,00c080000h,16
.sect ".text"
.global _filter_estimation
.sym _filter_estimation,_filter_estimation, 32, 2, 0
.func 32
;******************************************************************************
;* FUNCTION NAME: _filter_estimation *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A11,A12,A13,A14,B0,B1, *
;* B2,B3,B4,B5,B6,B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,B0,*
;* B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,DP,SP *
;* Local Frame Size : 0 Args + 0 Auto + 20 Save = 20 byte *
;******************************************************************************
;******************************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key optimizations! *
;* *
;******************************************************************************
_filter_estimation:
;** --------------------------------------------------------------------------*
.line 2
.sym _pilots,4, 22, 17, 32
.sym _received_pilots,20, 22, 17, 32
.sym _pilots_prod,6, 22, 17, 32
.sym _lambda,22, 6, 17, 32
.sym _alpha,8, 22, 17, 32
.sym _beta,24, 22, 17, 32
.sym _h_hat,10, 22, 17, 32
.sym _slask,26, 22, 17, 32
.sym _slask,26, 22, 4, 32
.sym _h_hat,10, 22, 4, 32
.sym _beta,12, 22, 4, 32
.sym _alpha,13, 22, 4, 32
.sym _pilots_prod,11, 22, 4, 32
.sym _received_pilots,0, 22, 4, 32
.sym _pilots,0, 22, 4, 32
.sym _lambda,14, 6, 4, 32
STW .D2T2 B3,*SP--(24) ; |33|
STW .D2T1 A13,*+SP(20) ; |33|
STW .D2T1 A12,*+SP(16) ; |33|
STW .D2T1 A14,*+SP(12) ; |33|
STW .D2T1 A11,*+SP(8) ; |33|
MV .S1X B8,A12 ; |33|
MV .D1 A6,A11 ; |33|
|| MV .L1 A8,A13 ; |33|
|| MV .S1X B6,A14 ; |33|
.line 8
MVKL .S2 _prod_element_conj,B5 ; |39|
MVKH .S2 _prod_element_conj,B5 ; |39|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 42
;* Loop opening brace source line : 42
;* Loop closing brace source line : 46
;* Known Minimum Trip Count : 248
;* Known Maximum Trip Count : 248
;* Known Max Trip Count Factor : 248
;* Loop Carried Dependency Bound(^) : 28
;* Unpartitioned Resource Bound : 3
;* Partitioned Resource Bound(*) : 3
;* Resource Partition:
;* A-side B-side
;* .L units 1 1
;* .S units 1 0
;* .D units 3* 3*
;* .M units 2 2
;* .X cross paths 1 1
;* .T address paths 3* 3*
;* Long read paths 1 1
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 0 1 (.L or .S or .D unit)
;* Bound(.L .S .LS) 1 1
;* Bound(.L .S .D .LS .LSD) 2 2
;*
;* Searching for software pipeline schedule at ...
;* ii = 28 Schedule found with 1 iterations in parallel
;* Done
;*
;* Collapsed epilog stages : 0
;* Collapsed prolog stages : 0
;*
;* Minimum safe trip count : 1
;*----------------------------------------------------------------------------*
L7: ; PIPED LOOP PROLOG
CALL .S2 B5 ; |39|
NOP 2
MVK .S2 0xf8,B6 ; |39|
MVKL .S2 RL1,B3 ; |39|
MV .S1X B10,A6 ; |39|
|| MVKH .S2 RL1,B3 ; |39|
RL1: ; CALL OCCURS ; |39|
NOP 1
ZERO .D1 A0
MV .D1 A11,A6
|| MVKH .S1 0x3f800000,A0
MV .D1 A13,A5
|| MV .S2X A12,B5
|| MV .S1X B10,A3
|| SUBSP .L1 A0,A14,A4
.line 11
MV .L2X A14,B4
|| MVC .S2 CSR,B8
MVK .S2 0xf8,B0 ; |42|
|| AND .L2 -2,B8,B7
MV .L2X A5,B6
|| MVC .S2 B7,CSR ; interrupts off
;** --------------------------------------------------------------------------*
L8: ; PIPED LOOP KERNEL
LDW .D1T1 *A3++,A0 ; |44| <0,0> ^
|| LDW .D2T2 *B6++,B7 ; |44| <0,0> ^
NOP 4
MPYSP .M1 A4,A0,A0 ; |44| <0,5> ^
|| MPYSP .M2 B4,B7,B7 ; |44| <0,5> ^
NOP 3
ADDSP .L2X B7,A0,B7 ; |44| <0,9> ^
NOP 3
STW .D1T2 B7,*A5++ ; |44| <0,13> ^
LDW .D1T1 *A6++,A0 ; |45| <0,14> ^
|| LDW .D2T2 *B5,B7 ; |45| <0,14> ^
NOP 4
MPYSP .M1 A4,A0,A0 ; |45| <0,19> ^
|| MPYSP .M2 B4,B7,B7 ; |45| <0,19> ^
NOP 1
[ B0] SUB .D2 B0,1,B0 ; |46| <0,21>
[ B0] B .S1 L8 ; |46| <0,22>
ADDSP .L1X B7,A0,A0 ; |45| <0,23> ^
NOP 3
STW .D2T1 A0,*B5++ ; |45| <0,27> ^
;** --------------------------------------------------------------------------*
L9: ; PIPED LOOP EPILOG
MVC .S2 B8,CSR ; interrupts on
.line 18
MV .D1 A10,A6 ; |49|
|| MV .L1 A13,A4 ; |49|
|| MV .L2X A12,B4 ; |49|
|| MVKL .S2 RL2,B3 ; |49|
|| MVKL .S1 _div_element,A0 ; |49|
MVKH .S2 RL2,B3 ; |49|
|| MVKH .S1 _div_element,A0 ; |49|
CALL .S2X A0 ; |49|
MVK .S2 0xf8,B6 ; |49|
NOP 4
RL2: ; CALL OCCURS ; |49|
.line 19
NOP 1
LDW .D2T1 *+SP(12),A14 ; |50|
LDDW .D2T1 *+SP(16),A13:A12 ; |50|
LDW .D2T1 *+SP(8),A11 ; |50|
LDW .D2T2 *++SP(24),B3 ; |50|
NOP 4
RET .S2 B3 ; |50|
NOP 5
; BRANCH OCCURS ; |50|
.endfunc 50,000087800h,24
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;******************************************************************************
.global _div_element
.global _prod_element_conj
.global __divd
;******************************************************************************
;* TYPE INFORMATION *
;******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -