qua_gain_asm.asm
来自「g.729汇编手工优化」· 汇编 代码 · 共 1,555 行 · 第 1/5 页
ASM
1,555 行
;SSBX FRCT
MVMD AR1,T
ADD A,B
;SSBX OVM
STLM B,AR2
;ST #5,*SP(0)
MPY *AR2,A
;RSBX FRCT
;RSBX OVM
NOP
;CALL #_L_shr
SFTA A,-5 ; ****
;RSBX OVM
;RSBX FRCT
;DST A,*SP(0)
LD A,B ; ****
DLD *SP(10),A
;CALL #_L_sub
SUB B,A
;RSBX OVM
;SSBX SXM
;SFTA A,8
;SFTA A,-8
BC L8,AGEQ
;----------------------------------------------------------------------
; 425 | (*cand2) =add(*cand2,1);
;----------------------------------------------------------------------
LD *AR6,16,A
;SSBX OVM
;NOP
ADD #1,16,A,A
SFTA A,-16,A
STL A,*AR6
;----------------------------------------------------------------------
; 427 | else break ;
; 428 | } while(sub( (*cand2),(NCODE2-NCAN2))) ;
; 431 | return ;
;----------------------------------------------------------------------
STLM A,AR2
NOP
NOP
BANZ L3,*AR2(-8)
B L8
L4:
LD #_thr1,A
ST #0,*AR7
STL A,*SP(2)
LD #0,A
L5:
;ST #3,*SP(0)
;RSBX OVM
LD *SP(2),B
;SSBX FRCT
ADD A,B
STLM B,AR2
;SSBX OVM
MVMD AR1,T
MPY *AR2,A
;RSBX FRCT
;RSBX OVM
NOP
;CALL #_L_shr
SFTA A,-3
;RSBX OVM
;RSBX FRCT
;DST A,*SP(0)
LD A,B
DLD *SP(8),A
;CALL #_L_sub
SUB B,A
;RSBX OVM
;SSBX SXM
;SFTA A,8
;SFTA A,-8
BC L6,ALEQ
LD *AR7,16,A
;SSBX OVM
;NOP
ADD #1,16,A,A
SFTA A,-16,A
STL A,*AR7
;RSBX OVM
LD *(AL),B
SUB #4,B,B
BC L5,BLT
L6:
LD #0,A
STM #_thr2,AR7
ST #0,*AR6
L7:
LDM AR7,B
;SSBX FRCT
ADD A,B
MVMD AR1,T
;SSBX OVM
STLM B,AR2
;ST #5,*SP(0)
NOP ; ****
NOP
MPY *AR2,A
;RSBX FRCT
;RSBX OVM
;NOP
;CALL #_L_shr
SFTA A,-5
;RSBX OVM
;RSBX FRCT
;DST A,*SP(0) ; |403|
LD A,B
DLD *SP(10),A ; |403|
;CALL #_L_sub ; |403|
SUB B,A
;RSBX OVM
;SSBX SXM
;SFTA A,8
;SFTA A,-8
BC L8,ALEQ
LD *AR6,16,A
;SSBX OVM
;NOP
ADD #1,16,A,A ; |405|
SFTA A,-16,A ; |405|
STL A,*AR6
;RSBX OVM
LD *(AL),B
SUB #8,B,B
BC L7,BLT
L8:
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #12
POPM AR7
POPM AR6
POPM AR1
RET
.sect ".text"
.global _Qua_gain
.sym _Qua_gain,_Qua_gain, 35, 2, 0
.func 42
;----------------------------------------------------------------------
; 42 | Word16 Qua_gain(
; 43 | Word16 code[], /* (i) Q13 :Innovative vector. */
; 44 | Word16 g_coeff[], /* (i) :Correlations <xn y1> -2<y1 y1> */
; 46 | Word16 exp_coeff[], /* (i) :Q-Format g_coeff[] */
; 47 | Word16 L_subfr, /* (i) :Subframe length. */
; 48 | Word16 *gain_pit, /* (o) Q14 :Pitch gain. */
; 49 | Word16 *gain_cod, /* (o) Q1 :Code gain. */
; 50 | Word16 tameflag /* (i) : set to 1 if taming is needed */
; 51 | )
;----------------------------------------------------------------------
;***************************************************************
;* FUNCTION DEF: _Qua_gain *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Qua_gain:
;* A assigned to _code
.sym _code,0, 19, 17, 16
.sym _g_coeff,46, 19, 9, 16
.sym _exp_coeff,47, 19, 9, 16
.sym _L_subfr,48, 3, 9, 16
.sym _gain_pit,49, 19, 9, 16
.sym _gain_cod,50, 19, 9, 16
.sym _tameflag,51, 3, 9, 16
;
; BRC assigned to temp var L$1
;
;* BRC assigned to L$1
.sym L$1,25, 4, 4, 16
;* A assigned to L$1
.sym L$1,0, 4, 4, 16
.sym _i,30, 3, 1, 16
.sym _i,30, 3, 1, 16
;* AR6 assigned to _j
.sym _j,15, 3, 4, 16
;* AR1 assigned to _j
.sym _j,10, 3, 4, 16
.sym _exp,30, 3, 1, 16
.sym _exp,30, 3, 1, 16
.sym _exp,30, 3, 1, 16
;* A assigned to _nume
.sym _nume,0, 3, 4, 16
;* A assigned to _nume
.sym _nume,0, 3, 4, 16
.sym _exp1,30, 3, 1, 16
.sym _exp1,30, 3, 1, 16
.sym _exp1,30, 3, 1, 16
;* AR6 assigned to _exp2
.sym _exp2,15, 3, 4, 16
;* AR6 assigned to _exp2
.sym _exp2,15, 3, 4, 16
;* AR6 assigned to _exp2
.sym _exp2,15, 3, 4, 16
;* A assigned to _tmp
.sym _tmp,0, 3, 4, 16
;* A assigned to _tmp
.sym _tmp,0, 3, 4, 16
;* A assigned to _tmp
.sym _tmp,0, 3, 4, 16
.sym _g_pitch,25, 3, 1, 16
.sym _g_pitch,25, 3, 1, 16
.sym _g_pit_cod,34, 3, 1, 16
.sym _g_pit_cod,34, 3, 1, 16
.sym _L_tmp,28, 5, 1, 32
.sym _L_tmp,28, 5, 1, 32
;* A assigned to _L_tmp
.sym _L_tmp,0, 5, 4, 32
;* A assigned to _L_tmp
.sym _L_tmp,0, 5, 4, 32
;* A assigned to _L_tmp
.sym _L_tmp,0, 5, 4, 32
;* A assigned to _L_tmp
.sym _L_tmp,0, 5, 4, 32
;* A assigned to _L_temp
.sym _L_temp,0, 5, 4, 32
;* A assigned to _L_temp
.sym _L_temp,0, 5, 4, 32
;* A assigned to _L_tmp1
.sym _L_tmp1,0, 5, 4, 32
;* A assigned to _L_tmp1
.sym _L_tmp1,0, 5, 4, 32
.sym _L_tmp1,28, 5, 1, 32
.sym _L_tmp2,28, 5, 1, 32
.sym _L_tmp2,28, 5, 1, 32
.sym _L_tmp2,32, 5, 1, 32
;* A assigned to _L_acc
.sym _L_acc,0, 5, 4, 32
;* A assigned to _L_acc
.sym _L_acc,0, 5, 4, 32
;* A assigned to _L_acc
.sym _L_acc,0, 5, 4, 32
;* A assigned to _L_acc
.sym _L_acc,0, 5, 4, 32
.sym U$164,35, 4, 1, 16
.sym U$164,35, 4, 1, 16
;* AR7 assigned to U$176
.sym U$176,16, 20, 4, 16
;* AR7 assigned to U$176
.sym U$176,16, 20, 4, 16
;* AR1 assigned to U$169
.sym U$169,10, 20, 4, 16
;* AR6 assigned to U$169
.sym U$169,15, 20, 4, 16
.sym U$139,30, 20, 1, 16
;* AR6 assigned to U$139
.sym U$139,15, 20, 4, 16
;* A assigned to _code
.sym _code,0, 19, 4, 16
;* AR1 assigned to _g_coeff
.sym _g_coeff,10, 19, 4, 16
;* AR7 assigned to _exp_coeff
.sym _exp_coeff,16, 19, 4, 16
;* B assigned to _L_subfr
.sym _L_subfr,6, 3, 4, 16
.sym _gain_pit,27, 19, 1, 16
.sym _gain_cod,26, 19, 1, 16
.sym _tameflag,25, 3, 1, 16
.sym _index1,37, 3, 1, 16
.sym _index2,38, 3, 1, 16
.sym _cand1,4, 3, 1, 16
.sym _cand2,5, 3, 1, 16
.sym _gcode0,6, 3, 1, 16
.sym _exp_gcode0,7, 3, 1, 16
;* A assigned to _gcode0_org
.sym _gcode0_org,0, 3, 4, 16
;* AR7 assigned to _e_min
.sym _e_min,16, 3, 4, 16
;* A assigned to _denom
.sym _denom,0, 3, 4, 16
.sym _inv_denom,34, 3, 1, 16
.sym _exp_inv_denom,35, 3, 1, 16
.sym _L_gbk12,28, 5, 1, 32
.sym _L_dist_min,32, 5, 1, 32
.sym L$2,34, 4, 1, 16
.sym K$12,36, 20, 1, 16
.sym K$175,39, 212, 1, 16,, 2
.sym K$168,40, 212, 1, 16,, 2
;* AR1 assigned to U$158
.sym U$158,10, 20, 4, 16
;* AR6 assigned to U$155
.sym U$155,15, 20, 4, 16
.sym U$148,35, 19, 1, 16
.sym U$113,30, 4, 1, 16
;* A assigned to C$13
.sym C$13,0, 4, 4, 16
;* B assigned to C$12
.sym C$12,6, 4, 4, 16
;* AR6 assigned to C$11
.sym C$11,15, 4, 4, 16
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?