📄 filter.asm
字号:
B .S2 B3 ; |39|
|| LDW .D2T1 *+SP(4),A10 ; |39|
LDW .D2T1 *++SP(8),A11 ; |39|
NOP 4
; BRANCH OCCURS ; |39|
.endfunc 39,000000c00h,8
.sect ".text"
.global _MultSine
.sym _MultSine,_MultSine, 32, 2, 0
.func 42
;******************************************************************************
;* FUNCTION NAME: _MultSine *
;* *
;* Regs Modified : A0,A1,A3,A4,A5,B0,B1,B4,B5 *
;* Regs Used : A0,A1,A3,A4,A5,B0,B1,B3,B4,B5,DP *
;* Local Frame Size : 0 Args + 0 Auto + 0 Save = 0 byte *
;******************************************************************************
_MultSine:
;** --------------------------------------------------------------------------*
.line 2
.sym _buffer,4, 19, 17, 32
.sym _size,20, 4, 17, 32
.sym A$2,0, 4, 4, 32
.sym V$0,0, 4, 4, 32
.sym _buffer,4, 19, 4, 32
.sym _size,20, 4, 4, 32
.sym L$1,20, 4, 4, 32
.sym U$16,4, 19, 4, 32
.sym K$12,3, 19, 4, 32
;** 46 ----------------------- if ( size <= 0 ) goto g7;
.line 5
CMPGT .L2 B4,0,B1 ; |46|
[!B1] B .S1 L12 ; |46|
[ B1] LDW .D2T1 *+DP(_j$1),A0
NOP 4
; BRANCH OCCURS ; |46|
;** --------------------------------------------------------------------------*
;** ----------------------- V$0 = j;
;** ----------------------- U$16 = buffer;
;** 48 ----------------------- L$1 = size;
;** ----------------------- K$12 = &sine[0];
;** ----------------------- #pragma MUST_ITERATE(1, 1099511627775, 1)
;** -----------------------g3:
;** 48 ----------------------- A$2 = _mpy(*U$16, K$12[V$0])>>12;
;** 48 ----------------------- *U$16++ = A$2;
;** 48 ----------------------- if ( (++V$0) < 80 ) goto g5;
;** 49 ----------------------- V$0 = 0;
;** -----------------------g5:
;** 50 ----------------------- if ( --L$1 ) goto g3;
.line 7
MVK .S1 (_sine-$bss),A3
MV .D2 B4,B0
MV .S2X A4,B5
|| MVK .S1 80,A5 ; |48|
|| ADD .L1X DP,A3,A3
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 46
;* Loop opening brace source line : 47
;* Loop closing brace source line : 50
;* Known Minimum Trip Count : 1
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 9
;* Unpartitioned Resource Bound : 2
;* Partitioned Resource Bound(*) : 2
;* Resource Partition:
;* A-side B-side
;* .L units 1 0
;* .S units 1 1
;* .D units 1 2*
;* .M units 1 0
;* .X cross paths 1 0
;* .T address paths 2* 1
;* Long read paths 1 0
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 2 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 = 9 Schedule found with 1 iterations in parallel
;* done
;*
;* Loop is interruptible
;* Collapsed epilog stages : 0
;* Collapsed prolog stages : 0
;*
;* Minimum safe trip count : 1
;*----------------------------------------------------------------------------*
L9: ; PIPED LOOP PROLOG
;** --------------------------------------------------------------------------*
L10: ; PIPED LOOP KERNEL
LDH .D1T1 *+A3[A0],A4 ; |48|
|| LDH .D2T2 *B5,B4 ; ^ |48|
NOP 1
[ B0] SUB .D2 B0,1,B0 ; |50|
[ B0] B .S2 L10 ; |50|
NOP 1
MPY .M1X B4,A4,A4 ; ^ |48|
ADD .D1 1,A0,A0 ; |48|
CMPLT .L1 A0,A5,A1 ; |48|
|| SHR .S1 A4,12,A4 ; ^ |48|
[!A1] ZERO .D1 A0 ; |49|
|| STH .D2T1 A4,*B5++ ; ^ |48|
;** --------------------------------------------------------------------------*
L11: ; PIPED LOOP EPILOG
;** --------------------------------------------------------------------------*
;** ----------------------- j = V$0;
;** -----------------------g7:
;** ----------------------- return;
STW .D2T1 A0,*+DP(_j$1)
;** --------------------------------------------------------------------------*
L12:
.line 10
B .S2 B3 ; |51|
NOP 5
; BRANCH OCCURS ; |51|
.endfunc 51,000000000h,0
.sect ".text"
.global _ProcBlock
.sym _ProcBlock,_ProcBlock, 32, 2, 0
.func 9
;******************************************************************************
;* FUNCTION NAME: _ProcBlock *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,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,B0,B1,B2, *
;* B3,B4,B5,B6,B7,B8,B9,DP,SP *
;* Local Frame Size : 0 Args + 0 Auto + 16 Save = 16 byte *
;******************************************************************************
_ProcBlock:
;** --------------------------------------------------------------------------*
.line 2
.sym _input,4, 19, 17, 32
.sym _output,20, 19, 17, 32
.sym _size,6, 4, 17, 32
.sym C$1,0, 19, 4, 32
.sym _size,10, 4, 4, 32
.sym _output,12, 19, 4, 32
.sym _input,11, 19, 4, 32
.sym _buff,25, 19, 4, 32
;** 12 ----------------------- buff = malloc(size*2u);
;** 14 ----------------------- C$1 = &coeff[0];
;** 14 ----------------------- filter(input, buff, size, &mem1, C$1, 113);
;** 15 ----------------------- MultSine(buff, size);
;** 16 ----------------------- filter(buff, output, size, &mem2, C$1, 113);
;** 17 ----------------------- free((void *)buff);
;** 17 ----------------------- return;
STW .D2T2 B3,*SP--(16) ; |10|
STW .D2T1 A10,*+SP(4) ; |10|
STW .D2T1 A11,*+SP(8) ; |10|
STW .D2T1 A12,*+SP(12) ; |10|
MV .D1 A4,A11
|| MV .S1 A6,A10
|| MV .L1X B4,A12
.line 4
B .S1 _malloc ; |12|
MVKL .S2 RL0,B3 ; |12|
ADD .D1 A10,A10,A4
MVKH .S2 RL0,B3 ; |12|
NOP 2
RL0: ; CALL OCCURS ; |12|
MV .S2X A4,B9
.line 6
B .S1 _filter ; |14|
MVKL .S2 RL2,B3 ; |14|
MVK .S1 (_mem1-$bss),A0 ; |14|
MVK .S2 0x71,B8 ; |14|
MVK .S1 (_coeff-$bss),A3 ; |14|
MV .D1 A11,A4 ; |14|
|| MV .D2 B9,B4 ; |14|
|| ADD .L2X DP,A0,B6
|| ADD .S1X DP,A3,A8
|| MV .L1 A10,A6 ; |14|
|| MVKH .S2 RL2,B3 ; |14|
RL2: ; CALL OCCURS ; |14|
.line 7
B .S1 _MultSine ; |15|
MVKL .S2 RL4,B3 ; |15|
MV .L2X A10,B4 ; |15|
MV .S1X B9,A4 ; |15|
MVKH .S2 RL4,B3 ; |15|
NOP 1
RL4: ; CALL OCCURS ; |15|
.line 8
B .S1 _filter ; |16|
MVK .S2 (_mem2-$bss),B4 ; |16|
MVKL .S2 RL6,B3 ; |16|
ADD .D2 DP,B4,B6
MV .D1 A10,A6 ; |16|
MVKH .S2 RL6,B3 ; |16|
|| MV .S1X B9,A4 ; |16|
|| MV .L2X A12,B4 ; |16|
RL6: ; CALL OCCURS ; |16|
.line 9
B .S1 _free ; |17|
MVKL .S2 RL8,B3 ; |17|
MVKH .S2 RL8,B3 ; |17|
MV .S1X B9,A4 ; |17|
NOP 2
RL8: ; CALL OCCURS ; |17|
.line 10
LDW .D2T1 *+SP(8),A11 ; |18|
LDW .D2T1 *+SP(12),A12 ; |18|
LDW .D2T1 *+SP(4),A10 ; |18|
LDW .D2T2 *++SP(16),B3 ; |18|
NOP 4
B .S2 B3 ; |18|
NOP 5
; BRANCH OCCURS ; |18|
.endfunc 18,000081c00h,16
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;******************************************************************************
.global _malloc
.global _free
;******************************************************************************
;* TYPE INFORMATION *
;******************************************************************************
.sym _size_t, 0, 14, 13, 32
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -