📄 matrix_mpys.asm
字号:
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",26,1
ZERO .L1 i ; |26|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",27,1
ZERO .L2 rst ; |27|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",28,1
B .S2 loop1 ; |42| (P) <0,7>
MV .L1 a_mtrx,a_mtrx'
|| MPY .M1 i,k,temp4' ; |31| (P) <0,0>
MV .L1X b_mtrx,b_mtrx'
|| ADD .L2 1,nn,B1
|| ADD .S1 0x1,i,i ; |40| (P) <0,1>
|| SUB .D1 temp1,i,temp5 ; |29| (P) <0,1> position src1
|| B .S2 loop1 ; |42| (P) <1,7>
MVK .L2 0x4,B2 ; init prolog collapse predicate
|| ADD .S2 1,nn,nn'
|| MV .L1X rst,rst'
|| SUB .D2 B1,1,B1 ; init epilog collapse predicate
|| SUB .S1 temp2,temp4',temp4 ; |32| (P) <0,2> position src2
|| MPY .M1 i,k,temp4' ; |31| (P) <1,0>
;** --------------------------------------------------------------------------*
loop1: ; PIPED LOOP KERNEL
DW$L$_matrix_mpys$5$B:
MPY .M1 src1,src2,dst ; |37| <1,9>
|| [ nn'] B .S2 loop1 ; |42| <2,7>
|| [ B1] LDH .D1T1 *+a_mtrx'[temp5],src1 ; |34| <4,3>
|| ADD .L1 0x1,i,i ; |40| <5,1>
|| SUB .S1 temp1,i,temp5 ; |29| <5,1> position src1
[ B2] SUB .L2 B2,1,B2 ; <0,12>
|| [ B1] SUB .S2 B1,1,B1 ; <0,12>
|| [!B2] ADD .S1 dst,rst',rst' ; |38| <0,12>
|| [ nn'] ADD .D2 0xffffffff,nn',nn' ; |41| <3,6> number of loop1
|| [ B1] LDH .D1T1 *+b_mtrx'[temp4],src2 ; |35| <4,4>
|| SUB .L1 temp2,temp4',temp4 ; |32| <5,2> position src2
|| MPY .M1 i,k,temp4' ; |31| <6,0>
DW$L$_matrix_mpys$5$E:
;** --------------------------------------------------------------------------*
L5: ; PIPED LOOP EPILOG AND PROLOG
; loop2:.trip 10
; loop1:.trip 30
MV .L2X b_mtrx',b_mtrx
MV .L2X rst',rst
NOP 2
MV .L1 a_mtrx',a_mtrx
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",44,1
CMPGT .L2 rst,max,x ; |44|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",45,1
[ x] MV .L2 rst,max ; |45| maximum number of C array
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",46,1
[ x] MV .L2 mm,i_max
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",47,1
[ x] MV .L2 kk,j_max
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",48,1
STW .D1T2 rst,*+c_mtrx[temp3] ; |48| store result
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",49,1
ADD .L1 0xffffffff,temp3,temp3 ; |49|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",50,1
ADD .L2 0xffffffff,kk,kk ; |50|
|| ADD .S2 0xffffffff,kk,kk$3 ; |50|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",51,1
NOP 1
MV .L1X kk$3,kk$2
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",19,1
MPY .M2X mm,n,temp1' ; |19|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",20,1
NOP 2
ADD .L1X 0xffffffff,temp1',temp1 ; |20| position end of A[m][n]
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",21,1
MPY .M1 n,k,temp2' ; |21|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",22,1
NOP 1
SUB .L1 temp2',z,temp2 ; |22|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",23,1
ADD .L1 0x1,z,z ; |23| position end of B[n][k]
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",25,1
MV .L2X n,nn ; |25| number of dotp in loop1
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",26,1
ZERO .L1 i ; |26|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",27,1
ZERO .L2 rst ; |27|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",28,1
ADD .L2 1,nn,nn'
|| MV .L1X b_mtrx,b_mtrx'
|| ADD .D2 1,nn,B1
|| MV .S1 a_mtrx,a_mtrx'
|| [ kk$2] B .S2 loop1 ; |51| branch to kernel
MVK .L2 0x4,B2 ; init prolog collapse predicate
|| MV .L1X rst,rst'
|| SUB .S2 B1,1,B1 ; init epilog collapse predicate
[ kk$2] B .S2 loop1 ; |42| (P) <0,7>
[ kk$2] MPY .M1 i,k,temp4' ; |31| (P) <0,0>
ADD .L1 0x1,i,i ; |40| (P) <0,1>
|| SUB .S1 temp1,i,temp5 ; |29| (P) <0,1> position src1
|| [ kk$2] B .S2 loop1 ; |42| (P) <1,7>
SUB .L1 temp2,temp4',temp4 ; |32| (P) <0,2> position src2
|| [ kk$2] MPY .M1 i,k,temp4' ; |31| (P) <1,0>
;** --------------------------------------------------------------------------*
DW$L$_matrix_mpys$7$B:
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",53,1
ADD .L2 0xffffffff,mm,mm ; |53|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",54,1
NOP 1
MV .L1X mm,mm'
[ mm'] BNOP .S1 loop3,5 ; |54|
; BRANCHCC OCCURS {loop3} ; |54|
DW$L$_matrix_mpys$7$E:
;** --------------------------------------------------------------------------*
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",56,1
STW .D2T2 max,*resultmax++ ; |56| store the max
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",57,1
STW .D2T2 i_max,*resultmax++ ; |57|
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",58,1
STW .D2T2 j_max,*resultmax++ ; |58| store the position of the max
.dwpsn "D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa",60,1
.dwcfa 0x0e, 0
RETNOP .S2 B3,5 ; |60|
; BRANCH OCCURS {B3} ; |60|
DW$32 .dwtag DW_TAG_loop
.dwattr DW$32, DW_AT_name("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.asm:L1:1:1134195402")
.dwattr DW$32, DW_AT_begin_file("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa")
.dwattr DW$32, DW_AT_begin_line(0x0f)
.dwattr DW$32, DW_AT_end_line(0x36)
DW$33 .dwtag DW_TAG_loop_range
.dwattr DW$33, DW_AT_low_pc(DW$L$_matrix_mpys$2$B)
.dwattr DW$33, DW_AT_high_pc(DW$L$_matrix_mpys$2$E)
DW$34 .dwtag DW_TAG_loop_range
.dwattr DW$34, DW_AT_low_pc(DW$L$_matrix_mpys$3$B)
.dwattr DW$34, DW_AT_high_pc(DW$L$_matrix_mpys$3$E)
DW$35 .dwtag DW_TAG_loop_range
.dwattr DW$35, DW_AT_low_pc(DW$L$_matrix_mpys$7$B)
.dwattr DW$35, DW_AT_high_pc(DW$L$_matrix_mpys$7$E)
DW$36 .dwtag DW_TAG_loop
.dwattr DW$36, DW_AT_name("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.asm:L4:2:1134195402")
.dwattr DW$36, DW_AT_begin_file("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa")
.dwattr DW$36, DW_AT_begin_line(0x13)
.dwattr DW$36, DW_AT_end_line(0x33)
DW$37 .dwtag DW_TAG_loop
.dwattr DW$37, DW_AT_name("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.asm:L4:2:1134195402:DT")
.dwattr DW$37, DW_AT_begin_file("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa")
.dwattr DW$37, DW_AT_begin_line(0x13)
.dwattr DW$37, DW_AT_end_line(0x33)
DW$38 .dwtag DW_TAG_loop_range
.dwattr DW$38, DW_AT_low_pc(DW$L$_matrix_mpys$5$B)
.dwattr DW$38, DW_AT_high_pc(DW$L$_matrix_mpys$5$E)
.dwendtag DW$37
DW$39 .dwtag DW_TAG_loop_range
.dwattr DW$39, DW_AT_low_pc(DW$L$_matrix_mpys$5$B)
.dwattr DW$39, DW_AT_high_pc(DW$L$_matrix_mpys$5$E)
.dwendtag DW$36
.dwendtag DW$32
.dwattr DW$1, DW_AT_end_file("D:\CCStudio_v3.1\MyProjects\matrix\matrix_mpys.sa")
.dwattr DW$1, DW_AT_end_line(0x3c)
.dwattr DW$1, DW_AT_end_column(0x01)
.dwendentry
.dwendtag DW$1
.clearmap
; .endproc
;******************************************************************************
;* TYPE INFORMATION *
;******************************************************************************
DW$T$19 .dwtag DW_TAG_subroutine_type
.dwattr DW$T$19, DW_AT_language(DW_LANG_C)
DW$T$10 .dwtag DW_TAG_base_type, DW_AT_name("int")
.dwattr DW$T$10, DW_AT_encoding(DW_ATE_signed)
.dwattr DW$T$10, DW_AT_byte_size(0x04)
.dwattr DW$CU, DW_AT_language(DW_LANG_C)
;***************************************************************
;* DWARF CIE ENTRIES *
;***************************************************************
DW$CIE .dwcie 1, 126
.dwcfa 0x0c, 31, 0
.dwcfa 0x07, 0
.dwcfa 0x07, 1
.dwcfa 0x07, 2
.dwcfa 0x07, 3
.dwcfa 0x07, 4
.dwcfa 0x07, 5
.dwcfa 0x07, 6
.dwcfa 0x07, 7
.dwcfa 0x07, 8
.dwcfa 0x07, 9
.dwcfa 0x08, 10
.dwcfa 0x08, 11
.dwcfa 0x08, 12
.dwcfa 0x08, 13
.dwcfa 0x08, 14
.dwcfa 0x08, 15
.dwcfa 0x07, 16
.dwcfa 0x07, 17
.dwcfa 0x07, 18
.dwcfa 0x07, 19
.dwcfa 0x07, 20
.dwcfa 0x07, 21
.dwcfa 0x07, 22
.dwcfa 0x07, 23
.dwcfa 0x07, 24
.dwcfa 0x07, 25
.dwcfa 0x08, 26
.dwcfa 0x08, 27
.dwcfa 0x08, 28
.dwcfa 0x08, 29
.dwcfa 0x08, 30
.dwcfa 0x08, 31
.dwcfa 0x08, 32
.dwcfa 0x07, 33
.dwcfa 0x07, 34
.dwcfa 0x07, 35
.dwcfa 0x07, 36
.dwcfa 0x07, 37
.dwcfa 0x07, 38
.dwcfa 0x07, 39
.dwcfa 0x07, 40
.dwcfa 0x07, 41
.dwcfa 0x07, 42
.dwcfa 0x07, 43
.dwcfa 0x07, 44
.dwcfa 0x07, 45
.dwcfa 0x07, 46
.dwcfa 0x07, 47
.dwcfa 0x07, 48
.dwcfa 0x07, 49
.dwcfa 0x07, 50
.dwcfa 0x07, 51
.dwcfa 0x07, 52
.dwcfa 0x07, 53
.dwcfa 0x07, 54
.dwcfa 0x07, 55
.dwcfa 0x07, 56
.dwcfa 0x07, 57
.dwcfa 0x07, 58
.dwcfa 0x07, 59
.dwcfa 0x07, 60
.dwcfa 0x07, 61
.dwcfa 0x07, 62
.dwcfa 0x07, 63
.dwcfa 0x07, 64
.dwcfa 0x07, 65
.dwcfa 0x07, 66
.dwcfa 0x07, 67
.dwcfa 0x07, 68
.dwcfa 0x07, 69
.dwcfa 0x07, 70
.dwcfa 0x07, 71
.dwcfa 0x07, 72
.dwcfa 0x07, 73
.dwcfa 0x07, 74
.dwcfa 0x07, 75
.dwcfa 0x07, 76
.dwcfa 0x07, 77
.dwcfa 0x07, 78
.dwcfa 0x07, 79
.dwcfa 0x07, 80
.dwcfa 0x07, 81
.dwcfa 0x07, 82
.dwcfa 0x07, 83
.dwcfa 0x07, 84
.dwcfa 0x07, 85
.dwcfa 0x07, 86
.dwcfa 0x07, 87
.dwcfa 0x07, 88
.dwcfa 0x07, 89
.dwcfa 0x07, 90
.dwcfa 0x07, 91
.dwcfa 0x07, 92
.dwcfa 0x07, 93
.dwcfa 0x07, 94
.dwcfa 0x07, 95
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -