⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix_mpys.asm

📁 自己编写的任意矩阵相乘的DSP程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
	.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 + -