📄 func.asm
字号:
LDH .D2T2 *+B4(2),B7 ; |8| (P) <0,1>
MVK .S1 0x1,A1 ; init prolog collapse predicate
|| ADD .D2 2,B5,B5
|| MV .L1X B5,A3
|| LDH .D1T1 *+A5(2),A4 ; |8| (P) <0,2>
;** --------------------------------------------------------------------------*
L2: ; PIPED LOOP KERNEL
ADD .L1X B6,A4,A6 ; |8| <0,6>
|| [ A0] BDEC .S1 L2,A0 ; |9| <1,3>
|| LDH .D1T1 *++A5(4),A4 ; |8| <2,0>
|| LDH .D2T2 *++B4(4),B6 ; |8| <2,0>
[!A1] STH .D1T1 A6,*++A3(4) ; |8| <0,7>
|| ADD .S2X B7,A4,B7 ; |8| <0,7>
|| LDH .D2T2 *+B4(2),B7 ; |8| <2,1>
[ A1] SUB .S1 A1,1,A1 ; <0,8>
|| [!A1] STH .D2T2 B7,*++B5(4) ; |8| <0,8>
|| LDH .D1T1 *+A5(2),A4 ; |8| <2,2>
;** --------------------------------------------------------------------------*
L3: ; PIPED LOOP EPILOG
ADD .D1X B6,A4,A5 ; |8| (E) <1,6>
ADD .D2X B7,A4,B7 ; |8| (E) <1,7>
|| STH .D1T1 A5,*++A3(4) ; |8| (E) <1,7>
STH .D2T2 B7,*++B5(4) ; |8| (E) <1,8>
MVC .S2 B8,CSR ; interrupts on
|| ADD .D1X B6,A4,A5 ; |8| (E) <2,6>
ADD .D2X B7,A4,B4 ; |8| (E) <2,7>
|| STH .D1T1 A5,*++A3(4) ; |8| (E) <2,7>
STH .D2T2 B4,*++B5(4) ; |8| (E) <2,8>
.line 11
RETNOP .S2 B3,5 ; |11|
; BRANCH OCCURS ; |11|
.endfunc 11,000000000h,0
.sect ".text"
.global _func2
.sym _func2,_func2, 32, 2, 0
.func 15
;******************************************************************************
;* FUNCTION NAME: _func2 *
;* *
;* Regs Modified : A0,A3,A4,A5,A6,A7,A8,B0,B4,B5,B6,B7 *
;* Regs Used : A0,A3,A4,A5,A6,A7,A8,B0,B3,B4,B5,B6,B7,DP,SP *
;* Local Frame Size : 0 Args + 0 Auto + 0 Save = 0 byte *
;******************************************************************************
;******************************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key optimizations! *
;* *
;******************************************************************************
_func2:
;** --------------------------------------------------------------------------*
.line 2
.sym _a,4, 19, 17, 32
.sym _b,20, 19, 17, 32
.sym _c,6, 19, 17, 32
.sym _N,22, 4, 17, 32
.sym C$2,3, 7, 4, 64
.sym C$3,3, 7, 4, 64
.sym _a,3, 19, 4, 32
.sym _b,3, 19, 4, 32
.sym _c,3, 19, 4, 32
.sym _N,22, 4, 4, 32
.sym L$1,21, 4, 4, 32
.sym U$20,3, 16, 4, 32
.sym U$16,20, 16, 4, 32
.sym U$12,4, 16, 4, 32
;** ----------------------- U$12 = (const void * const restrict)a;
;** ----------------------- U$16 = (const void * const restrict)b;
;** ----------------------- U$20 = (void * const restrict)c;
;** 30 ----------------------- L$1 = N+3>>2;
;** ----------------------- #pragma MUST_ITERATE(10, 536870911, 1)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** -----------------------g2:
;** 39 ----------------------- C$3 = *(const double *)U$12++{8};
;** 39 ----------------------- C$2 = *(const double *)U$16++{8};
;** 39 ----------------------- *(double *)U$20++{8} = _itod((unsigned)_add2((int)_hi(C$2), (int)_hi(C$3)), (unsigned)_add2((int)_lo(C$2), (int)_lo(C$3)));
;** 41 ----------------------- if ( --L$1 ) goto g2;
;** ----------------------- return;
MV .D1 A6,A3 ; |16|
.line 16
ADD .D2 3,B6,B5 ; |30|
|| MVC .S2 CSR,B7
MV .D2 B4,B6
|| SHR .S2 B5,2,B5 ; |30|
|| AND .L2 -2,B7,B4
MV .D1 A4,A8
|| SUB .D2 B5,3,B0
|| MVC .S2 B4,CSR ; interrupts off
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;*
;* Loop source line : 26
;* Loop opening brace source line : 27
;* Loop closing brace source line : 41
;* Known Minimum Trip Count : 10
;* Known Max Trip Count Factor : 1
;* Loop Carried Dependency Bound(^) : 0
;* Unpartitioned Resource Bound : 2
;* Partitioned Resource Bound(*) : 2
;* Resource Partition:
;* A-side B-side
;* .L units 0 0
;* .S units 0 1
;* .D units 2* 1
;* .M units 0 0
;* .X cross paths 2* 0
;* .T address paths 2* 1
;* Long read paths 0 0
;* Long write paths 0 0
;* Logical ops (.LS) 0 0 (.L or .S unit)
;* Addition ops (.LSD) 2 0 (.L or .S or .D unit)
;* Bound(.L .S .LS) 0 1
;* Bound(.L .S .D .LS .LSD) 2* 1
;*
;* Searching for software pipeline schedule at ...
;* ii = 2 Schedule found with 4 iterations in parallel
;*
;* Register Usage Table:
;* +-----------------------------------------------------------------+
;* |AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB|
;* |00000000001111111111222222222233|00000000001111111111222222222233|
;* |01234567890123456789012345678901|01234567890123456789012345678901|
;* |--------------------------------+--------------------------------|
;* 0: |* * ** * |* ** |
;* 1: |* ****** |* *** |
;* +-----------------------------------------------------------------+
;*
;* Done
;*
;* Epilog not removed
;* Collapsed epilog stages : 0
;*
;* Prolog not entirely removed
;* Collapsed prolog stages : 1
;*
;* Minimum required memory pad : 0 bytes
;*
;* Minimum safe trip count : 3
;*----------------------------------------------------------------------------*
;* SINGLE SCHEDULED ITERATION
;*
;* C74:
;* 0 LDDW .D1T1 *A8++,A5:A4 ; |39|
;* || LDDW .D2T2 *B6++,B5:B4 ; |39|
;* 1 NOP 1
;* 2 [ B0] BDEC .S2 C74,B0 ; |41|
;* 3 NOP 2
;* 5 ADD2 .L1X B4,A4,A6 ; |39|
;* 6 ADD2 .S1X B5,A5,A7 ; |39|
;* 7 STDW .D1T1 A7:A6,*A3++ ; |39|
;* ; BRANCH OCCURS ; |41|
;*----------------------------------------------------------------------------*
L4: ; PIPED LOOP PROLOG
LDDW .D1T1 *A8++,A5:A4 ; |39| (P) <0,0>
|| [ B0] BDEC .S2 L5,B0 ; |41| (P) <0,2>
|| LDDW .D2T2 *B6++,B5:B4 ; |39| (P) <0,0>
NOP 1
LDDW .D2T2 *B6++,B5:B4 ; |39| (P) <1,0>
|| [ B0] BDEC .S2 L5,B0 ; |41| (P) <1,2>
|| LDDW .D1T1 *A8++,A5:A4 ; |39| (P) <1,0>
MVK .D1 0x1,A0 ; init prolog collapse predicate
;** --------------------------------------------------------------------------*
L5: ; PIPED LOOP KERNEL
ADD2 .S1X B5,A5,A7 ; |39| <0,6>
|| [ B0] BDEC .S2 L5,B0 ; |41| <2,2>
|| LDDW .D1T1 *A8++,A5:A4 ; |39| <3,0>
|| LDDW .D2T2 *B6++,B5:B4 ; |39| <3,0>
[ A0] SUB .S1 A0,1,A0 ; <0,7>
|| [!A0] STDW .D1T1 A7:A6,*A3++ ; |39| <0,7>
|| ADD2 .L1X B4,A4,A6 ; |39| <1,5>
;** --------------------------------------------------------------------------*
L6: ; PIPED LOOP EPILOG
ADD2 .D1X B5,A5,A7 ; |39| (E) <1,6>
ADD2 .S1X B4,A4,A6 ; |39| (E) <2,5>
|| STDW .D1T1 A7:A6,*A3++ ; |39| (E) <1,7>
MVC .S2 B7,CSR ; interrupts on
|| ADD2 .D1X B5,A5,A7 ; |39| (E) <2,6>
ADD2 .S1X B5,A5,A7 ; |39| (E) <3,6>
|| STDW .D1T1 A7:A6,*A3++ ; |39| (E) <2,7>
ADD2 .D1X B4,A4,A6 ; |39| (E) <3,5>
STDW .D1T1 A7:A6,*A3++ ; |39| (E) <3,7>
.line 29
RETNOP .S2 B3,5 ; |43|
; BRANCH OCCURS ; |43|
.endfunc 43,000000000h,0
.sect ".text"
.global _main
.file "D:\DM64xApp\5stsrc\dataPack\main.c"
.sym _main,_main, 32, 2, 0
.func 50
;******************************************************************************
;* FUNCTION NAME: _main *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,SP,A16,A17,A18,A19,A20,A21,A22,A23,A24, *
;* A25,A26,A27,A28,A29,A30,A31,B16,B17,B18,B19,B20, *
;* B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31 *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,DP,SP,A16,A17,A18,A19,A20,A21,A22,A23, *
;* A24,A25,A26,A27,A28,A29,A30,A31,B16,B17,B18,B19, *
;* B20,B21,B22,B23,B24,B25,B26,B27,B28,B29,B30,B31 *
;* Local Frame Size : 8 Args + 0 Auto + 4 Save = 12 byte *
;******************************************************************************
;******************************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key optimizations! *
;* *
;******************************************************************************
_main:
;** --------------------------------------------------------------------------*
.line 2
.sym C$1,25, 19, 4, 32
.sym C$2,24, 19, 4, 32
.sym C$3,4, 19, 4, 32
.sym C$4,53, 19, 4, 32
;** 54 ----------------------- C$1 = &d1[0];
;** 54 ----------------------- C$4 = &b[0];
;** 54 ----------------------- C$3 = &a[0];
;** 54 ----------------------- func1(C$3, C$4, C$1, 40);
;** 56 ----------------------- C$2 = &d2[0];
;** 56 ----------------------- func2(C$3, C$4, C$2, 40);
;** 59 ----------------------- if ( !memcmp(C$1, C$2, 80u) ) goto g2;
STW .D2T2 B3,*SP--(16) ; |51|
.line 5
CALL .S1 _func1 ; |54|
MVK .S1 (_a-$bss),A4 ; |54|
|| MVK .S2 (_d1-$bss),B4 ; |54|
ADD .D2 DP,B4,B9 ; |54|
|| MVK .S1 (_b-$bss),A3 ; |54|
ADD .D1X DP,A4,A7 ; |54|
MV .D1X B9,A6 ; |54|
|| ADD .D2X DP,A3,B16 ; |54|
|| MVK .S2 0x28,B6 ; |54|
ADDKPC .S2 RL0,B3,0 ; |54|
|| ADD .D2X DP,A3,B4 ; |54|
|| ADD .D1X DP,A4,A4 ; |54|
RL0: ; CALL OCCURS ; |54|
MV .D1 A7,A4 ; |54|
.line 7
CALL .S1 _func2 ; |56|
MVK .S2 (_d2-$bss),B4 ; |56|
ADD .D2 DP,B4,B8 ; |56|
MVK .S2 0x28,B6 ; |56|
ADDKPC .S2 RL1,B3,0 ; |56|
MV .D2 B16,B4 ; |56|
|| MV .D1X B8,A6 ; |56|
RL1: ; CALL OCCURS ; |56|
.line 10
CALL .S1 _memcmp ; |59|
ADDKPC .S2 RL2,B3,1 ; |59|
MV .D2 B8,B4 ; |59|
MV .D1X B9,A4 ; |59|
MVK .S1 0x50,A6 ; |59|
RL2: ; CALL OCCURS ; |59|
MV .D1 A4,A0 ; |59|
[!A0] BNOP .S1 L7,5 ; |59|
; BRANCH OCCURS ; |59|
;** --------------------------------------------------------------------------*
;** 60 ----------------------- printf((const char *)"Result failure tutor1()\n");
;** -----------------------g2:
;** ----------------------- return;
.line 11
CALL .S1 _printf ; |60|
ADDKPC .S2 RL3,B3,1 ; |60|
MVKL .S1 SL1+0,A3 ; |60|
MVKH .S1 SL1+0,A3 ; |60|
STW .D2T1 A3,*+SP(4) ; |60|
RL3: ; CALL OCCURS ; |60|
;** --------------------------------------------------------------------------*
L7:
.line 14
LDW .D2T2 *++SP(16),B3 ; |63|
NOP 4
RETNOP .S2 B3,5 ; |63|
; BRANCH OCCURS ; |63|
.endfunc 63,000080000h,16
;******************************************************************************
;* STRINGS *
;******************************************************************************
.sect ".const"
SL1: .string "Result failure tutor1()",10,0
;******************************************************************************
;* UNDEFINED EXTERNAL REFERENCES *
;******************************************************************************
.global _printf
.global _memcmp
;******************************************************************************
;* TYPE INFORMATION *
;******************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -