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 + -
显示快捷键?