📄 idct1.asm
字号:
;******************************************************************************
;* TMS320C6x C/C++ Codegen PC Version 4.32 *
;* Date/Time created: Sun Oct 08 17:48:20 2006 *
;******************************************************************************
;******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C64xx *
;* Optimization : Disabled *
;* Optimizing for : Compile time, Ease of Development *
;* Based on options: no -o, no -ms *
;* Endian : Little *
;* Interrupt Thrshld : Disabled *
;* Memory Model : Small *
;* Calls to RTS : Near *
;* Pipelining : Disabled *
;* Memory Aliases : Presume are aliases (pessimistic) *
;* Debug Info : COFF Debug *
;* *
;******************************************************************************
.asg A15, FP
.asg B14, DP
.asg B15, SP
.global $bss
.file "serial_asm"
; B8_SIZE .equ 8
; Y_SHIFT .equ 4 ;每行有8*2 byte(short类型)(2^4)
; X_SHIFT .equ 1 ;short类型xx左移1位就可以
;CLIP3 .macro data,offset
; addk 64,data
; shr data,7,data
; cmplt data,lt,flag1
;[flag1] mv lt,data
; cmpgt data,gt,flag2
;[flag2] mv gt,data
; sth data,*+addr[offset]
; .endm
CLIP3 .macro data,offset
cmplt data,lt,flag1
[flag1] mv lt,data
cmpgt data,gt,flag2
[flag2] mv gt,data
addk 64,data
shr data,7,data
sth data,*+addr[offset]
.endm
.global _inv_transform_B8
.sect ".text"
.file "idct1.sa"
.sym _inv_transform_B8,_inv_transform_B8, 32, 3, 0
.func 29
;******************************************************************************
;* FUNCTION NAME: _inv_transform_B8 *
;* *
;* Regs Modified : A0,A3,A5,A6,A7,A8,A9,B4,B5,B6,B7,B8,B9,A16,A17,A18, *
;* A19,A20,A21,A22,B16,B17,B18,B19,B20,B21,B22,B23, *
;* B24,B25 *
;* Regs Used : A0,A3,A4,A5,A6,A7,A8,A9,B3,B4,B5,B6,B7,B8,B9,SP,A16, *
;* A17,A18,A19,A20,A21,A22,B16,B17,B18,B19,B20,B21, *
;* B22,B23,B24,B25 *
;******************************************************************************
_inv_transform_B8:
;** --------------------------------------------------------------------------*
.line 1
.sym curr_blk,4, 4, 4, 32
;
;
; _inv_transform_B8: .cproc curr_blk
.sym xx,40, 4, 4, 32
.sym yy,3, 4, 4, 32
; .reg xx,yy
.sym tmp0,3, 4, 4, 32
.sym tmp1,3, 4, 4, 32
.sym tmp2,3, 4, 4, 32
.sym tmp3,3, 4, 4, 32
.sym tmp4,5, 4, 4, 32
.sym tmp5,6, 4, 4, 32
.sym tmp6,7, 4, 4, 32
.sym tmp7,8, 4, 4, 32
; .reg tmp0,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6,tmp7
.sym bb0,3, 4, 4, 32
.sym bb1,3, 4, 4, 32
.sym bb2,3, 4, 4, 32
.sym bb3,3, 4, 4, 32
.sym bb4,3, 4, 4, 32
.sym bb5,3, 4, 4, 32
.sym bb6,3, 4, 4, 32
.sym bb7,3, 4, 4, 32
; .reg bb0,bb1,bb2,bb3,bb4,bb5,bb6,bb7
.sym t0,20, 4, 4, 32
.sym t1,20, 4, 4, 32
.sym t2,20, 4, 4, 32
.sym t3,20, 4, 4, 32
.sym t4,20, 4, 4, 32
.sym t5,3, 4, 4, 32
.sym t6,20, 4, 4, 32
.sym t7,3, 4, 4, 32
; .reg t0,t1,t2,t3,t4,t5,t6,t7 ;存储中间结果 临时变量
.sym addr,3, 4, 4, 32
; .reg addr
.sym loop_flag,0, 4, 4, 32
.sym flag1,3, 4, 4, 32
.sym flag2,3, 4, 4, 32
; .reg loop_flag,flag1,flag2
.sym lt,3, 4, 4, 32
.sym gt,3, 4, 4, 32
; .reg lt,gt
.sym k0,3, 4, 4, 32
.sym k1,3, 4, 4, 32
.sym k2,3, 4, 4, 32
.sym k3,3, 4, 4, 32
; .reg k0,k1,k2,k3;
.line 12
ZERO .D1 A19 ; |40|
.line 13
ZERO .D1 A3 ; |41|
.line 15
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: Software pipelining disabled
;*----------------------------------------------------------------------------*
yy_loop:
; yy_loop: .trip 8,8,2
.line 16
SHL .S1 A3,0x4,A5 ; |44|
.line 17
ADD .D1 A5,A4,A9 ; |45|
.line 18
LDH .D1T1 *A9,A18 ; |46| tmp[0]=curr_blk1[yy][0];
NOP 4
.line 19
LDH .D1T1 *+A9(8),A16 ; |47| tmp[1]=curr_blk1[yy][4];
NOP 4
.line 20
LDH .D1T1 *+A9(4),A20 ; |48| tmp[2]=curr_blk1[yy][2];
NOP 4
.line 21
LDH .D1T1 *+A9(12),A17 ; |49| tmp[3]=curr_blk1[yy][6];
NOP 4
.line 22
LDH .D1T1 *+A9(2),A5 ; |50| tmp[4]=curr_blk1[yy][1];
NOP 4
.line 23
LDH .D1T1 *+A9(6),A6 ; |51| tmp[5]=curr_blk1[yy][3];
NOP 4
.line 24
LDH .D1T1 *+A9(10),A7 ; |52| tmp[6]=curr_blk1[yy][5];
NOP 4
.line 25
LDH .D1T1 *+A9(14),A8 ; |53| tmp[7]=curr_blk1[yy][7];
NOP 4
.line 27
SUB .D1 A5,A8,A21 ; |55| b[0] = ((tmp[4] - tmp[7])<<1) + tmp[4];
.line 28
SHL .S1 A21,0x1,A21 ; |56|
.line 29
ADD .D1 A5,A21,A21 ; |57|
.line 41
ADD .D1 A6,A7,A22 ; |69| b[1] = ((tmp[5] + tmp[6])<<1) + tmp[5];
.line 42
SHL .S1 A22,0x1,A22 ; |70|
.line 43
ADD .D1 A6,A22,A22 ; |71|
.line 49
SUB .D1 A6,A7,A6 ; |77| b[2] = ((tmp[5] - tmp[6])<<1) - tmp[6];
NOP 1
.line 50
SHL .S2X A6,0x1,B4 ; |78|
.line 51
SUB .S2X B4,A7,B4 ; |79|
.line 57
ADD .D1 A5,A8,A5 ; |85| b[3] = ((tmp[4] + tmp[7])<<1) + tmp[7];
NOP 1
.line 58
SHL .S2X A5,0x1,B5 ; |86|
NOP 1
.line 59
ADD .D1X A8,B5,A5 ; |87|
.line 65
ADD .D1 A21,A22,A6 ; |93| b[4] = ((b[0] + b[1] + b[3])<<1) + b[1];
.line 66
ADD .D1 A5,A6,A6 ; |94|
.line 67
SHL .S1 A6,0x1,A6 ; |95|
.line 68
ADD .D1 A6,A22,A8 ; |96|
.line 72
SUB .D1 A21,A22,A6 ; |100| b[5] = ((b[0] - b[1] + b[2])<<1) + b[0];
NOP 1
.line 73
ADD .D2X B4,A6,B5 ; |101|
.line 74
SHL .S2 B5,0x1,B5 ; |102|
.line 75
ADD .D2X B5,A21,B8 ; |103|
.line 77
ADD .D2X A22,B4,B5 ; |105| b[6] = ((-b[1] - b[2] + b[3])<<1)+ b[3];
.line 78
SUB .S2X A5,B5,B5 ; |106|
.line 79
SHL .S2 B5,0x1,B5 ; |107|
.line 80
ADD .D2X B5,A5,B7 ; |108|
.line 82
SUB .S2X A21,B4,B5 ; |110| b[7] = ((b[0] - b[2] - b[3])<<1) - b[2];
.line 83
SUB .S2X B5,A5,B5 ; |111|
.line 84
SHL .S2 B5,0x1,B5 ; |112|
.line 85
SUB .D2 B5,B4,B9 ; |113|
.line 87
MPY .M1 0xa,A20,A5 ; |115| t=((tmp[2]*10)+(tmp[3]<<2));
NOP 1
.line 88
SHL .S1 A17,0x2,A6 ; |116|
.line 89
ADD .D1 A5,A6,A5 ; |117|
.line 91
SHL .S2X A20,0x2,B4 ; |119| tmp[3]=((tmp[2]<<2)-(tmp[3]*10));
.line 92
MPY .M2X 0xa,A17,B5 ; |120|
NOP 1
.line 93
SUB .D2 B4,B5,B5 ; |121|
.line 95
.line 97
ADD .D1 A18,A16,A6 ; |125| t=(tmp[0]+tmp[1])<<3;
NOP 1
.line 98
SHL .S2X A6,0x3,B4 ; |126|
.line 100
SUB .D1 A18,A16,A6 ; |128| tmp[1]=(tmp[0]-tmp[1])<<3;
.line 101
SHL .S1 A6,0x3,A7 ; |129|
.line 103
.line 105
ADD .D1X B4,A5,A6 ; |133| b[0]=tmp[0]+tmp[2];
.line 106
ADD .D2X A7,B5,B6 ; |134| b[1]=tmp[1]+tmp[3];
.line 107
SUB .S1X A7,B5,A7 ; |135| b[2]=tmp[1]-tmp[3];
.line 108
SUB .S1X B4,A5,A16 ; |136| b[3]=tmp[0]-tmp[2];
.line 110
ADD .D1 A6,A8,A5 ; |138| curr_blk1[yy][0]=((b[0]+b[4])+4)>>3;
.line 111
ADD .D1 0x4,A5,A5 ; |139|
.line 112
SHR .S1 A5,0x3,A5 ; |140|
.line 113
STH .D1T1 A5,*A9 ; |141|
NOP 2
.line 115
ADD .D2 B6,B8,B4 ; |143| curr_blk1[yy][1]=((b[1]+b[5])+4)>>3;
NOP 1
.line 116
ADD .D1X 0x4,B4,A5 ; |144|
.line 117
SHR .S1 A5,0x3,A5 ; |145|
.line 118
STH .D1T1 A5,*+A9(2) ; |146|
NOP 2
.line 120
ADD .D1X A7,B7,A5 ; |148| curr_blk1[yy][2]=((b[2]+b[6])+4)>>3;
.line 121
ADD .D1 0x4,A5,A5 ; |149|
.line 122
SHR .S1 A5,0x3,A5 ; |150|
.line 123
STH .D1T1 A5,*+A9(4) ; |151|
NOP 2
.line 125
ADD .D1X A16,B9,A5 ; |153| curr_blk1[yy][3]=((b[3]+b[7])+4)>>3;
.line 126
ADD .D1 0x4,A5,A5 ; |154|
.line 127
SHR .S1 A5,0x3,A5 ; |155|
.line 128
STH .D1T1 A5,*+A9(6) ; |156|
NOP 2
.line 130
SUB .S2X A16,B9,B4 ; |158| curr_blk1[yy][4]=((b[3]-b[7])+4)>>3;
.line 131
ADD .D2 0x4,B4,B4 ; |159|
.line 132
SHR .S2 B4,0x3,B4 ; |160|
.line 133
STH .D1T2 B4,*+A9(8) ; |161|
NOP 2
.line 135
SUB .S2X A7,B7,B4 ; |163| curr_blk1[yy][5]=((b[2]-b[6])+4)>>3;
.line 136
ADD .D2 0x4,B4,B4 ; |164|
.line 137
SHR .S2 B4,0x3,B4 ; |165|
.line 138
STH .D1T2 B4,*+A9(10) ; |166|
NOP 2
.line 140
SUB .D2 B6,B8,B4 ; |168| curr_blk1[yy][6]=((b[1]-b[5])+4)>>3;
.line 141
ADD .D2 0x4,B4,B4 ; |169|
.line 142
SHR .S2 B4,0x3,B4 ; |170|
.line 143
STH .D1T2 B4,*+A9(12) ; |171|
NOP 2
.line 145
SUB .D1 A6,A8,A5 ; |173| curr_blk1[yy][7]=((b[0]-b[4])+4)>>3;
.line 146
ADD .D1 0x4,A5,A5 ; |174|
.line 147
SHR .S1 A5,0x3,A5 ; |175|
.line 148
STH .D1T1 A5,*+A9(14) ; |176|
NOP 2
.line 150
ADD .D1 0x1,A3,A3 ; |178| for(yy=0; yy<8; yy++)
.line 151
CMPGT .L1 0x8,A3,A0 ; |179|
.line 152
[ A0] BNOP .S1 yy_loop,5 ; |180|
; BRANCH OCCURS ; |180|
;** --------------------------------------------------------------------------*
.line 157
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: Software pipelining disabled
;*----------------------------------------------------------------------------*
xx_loop:
.line 156
SHL .S1 A19,0x1,A3 ; |184|
.line 157
ADD .D1 A4,A3,A3 ; |185|
.line 158
MVK .S1 0x20,A9 ; |186|
.line 159
MVK .S1 0x10,A16 ; |187|
.line 160
MVK .S1 0x30,A17 ; |188|
.line 161
MVK .D1 0x8,A7 ; |189|
.line 162
MVK .S1 0x18,A8 ; |190|
.line 163
MVK .S1 0x28,A5 ; |191|
.line 164
MVK .S1 0x38,A6 ; |192|
.line 165
LDH .D1T1 *A3,A20 ; |193| tmp[0]=curr_blk1[0][xx];
NOP 4
.line 166
LDH .D1T1 *+A3[A9],A18 ; |194| tmp[1]=curr_blk1[4][xx];
NOP 4
.line 167
LDH .D1T1 *+A3[A16],A21 ; |195| tmp[2]=curr_blk1[2][xx];
NOP 4
.line 168
LDH .D1T1 *+A3[A17],A17 ; |196| tmp[3]=curr_blk1[6][xx];
NOP 4
.line 169
LDH .D1T1 *+A3[A7],A9 ; |197| tmp[4]=curr_blk1[1][xx];
NOP 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -