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

📄 lspgetq_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	.line	13
        FRAME     #4
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET
        ; return occurs
;;	.endfunc	189,000018400h,7



	.sect	".text"
	.global	_Lsp_prev_extract

;----------------------------------------------------------------------
; 147 | void Lsp_prev_extract(                                                 
; 148 | Word16 lsp[M],                /* (i) Q13 : unquantized LSP parameters
;     | */                                                                     
; 149 | Word16 lsp_ele[M],            /* (o) Q13 : target vector
;     | */                                                                     
; 150 | Word16 fg[MA_NP][M],          /* (i) Q15 : MA prediction coef.
;     | */                                                                     
; 151 | Word16 freq_prev[MA_NP][M],   /* (i) Q13 : previous LSP vector
;     | */                                                                     
; 152 | Word16 fg_sum_inv[M]          /* (i) Q12 : inverse previous LSP vector
;     | */                                                                     
; 153 | )                                                                      
;----------------------------------------------------------------------

;***************************************************************
;* FUNCTION DEF: _Lsp_prev_extract                             *
;***************************************************************

;***************************************************************
;*                                                             *
;* Using -g (debug) with optimization (-o3) may disable key op *
;*                                                             *
;***************************************************************
_Lsp_prev_extract:
	.line	8
;* A     assigned to _lsp
	.sym	_lsp,0, 19, 17, 16
	.sym	_lsp_ele,10, 19, 9, 16
	.sym	_fg,11, 211, 9, 16,, 10
	.sym	_freq_prev,12, 211, 9, 16,, 10
	.sym	_fg_sum_inv,13, 19, 9, 16
;
; BRC	assigned to temp var  L$2
;
;* BRC   assigned to L$2
	.sym	L$2,25, 4, 4, 16
;* A     assigned to L$2
	.sym	L$2,0, 4, 4, 16
	.sym	U$7,2, 19, 1, 16
	.sym	U$17,3, 20, 1, 16
	.sym	U$19,4, 20, 1, 16
;* AR7   assigned to U$27
	.sym	U$27,16, 19, 4, 16
;* AR6   assigned to U$34
	.sym	U$34,15, 19, 4, 16
;* A     assigned to _L_temp
	.sym	_L_temp,0, 5, 4, 32
;* AR1   assigned to _j
	.sym	_j,10, 3, 4, 16
;* AR7   assigned to _fg_sum_inv
	.sym	_fg_sum_inv,16, 19, 4, 16
;* B     assigned to _freq_prev
	.sym	_freq_prev,6, 211, 4, 16,, 10
;* AR1   assigned to _fg
	.sym	_fg,10, 211, 4, 16,, 10
;* AR6   assigned to _lsp_ele
	.sym	_lsp_ele,15, 19, 4, 16
;* A     assigned to _lsp
	.sym	_lsp,0, 19, 4, 16
;**  	-----------------------    #pragma MUST_ITERATE(10, 10, 10)
;**  	-----------------------    #pragma LOOP_FLAGS(5120u)
;**  	-----------------------    U$7 = &lsp[-1];
;**  	-----------------------    U$27 = fg_sum_inv;
;**  	-----------------------    U$34 = lsp_ele;
;**  	-----------------------    U$17 = (int * const)fg;
;**  	-----------------------    U$19 = (int * const)freq_prev;
;** 160	-----------------------    j = 0;
        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-6
;----------------------------------------------------------------------
; 155 | Word16 j, k;                                                           
; 156 | Word32 L_temp;                /* Q19 */                                
; 157 | Word16 temp;                  /* Q13 */                                
;----------------------------------------------------------------------
        RSBX      OVM
        LD        *SP(12),B
        SUB       #1,A,A
        MVDK      *SP(10),*(AR6)
        STL       B,*SP(4)
        STL       A,*SP(2)
        MVDK      *SP(11),*(AR1)
        MVKD      *(AR1),*SP(3)
        MVDK      *SP(13),*(AR7)
	.line	14
;----------------------------------------------------------------------
; 160 | for ( j = 0 ; j < M ; j++ ) {                                          
;----------------------------------------------------------------------
        STM       #0,AR1
L8:    
;**	-----------------------g2:
;** 161	-----------------------    L_temp = (long)*(++U$7)<<16;
;**  	-----------------------    #pragma MUST_ITERATE(4, 4, 4)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**	-----------------------g4:
;**  	-----------------------    L$2 = 3;
;**	-----------------------g7:
	.line	15
;----------------------------------------------------------------------
; 161 | L_temp = L_deposit_h(lsp[j]);                                          
; 162 | for ( k = 0 ; k < MA_NP ; k++ )                                        
;----------------------------------------------------------------------
        SSBX      SXM
        ;;SSBX      OVM;;wly
        NOP
        MVDK      *SP(2),*(AR2)
        STM       #3,BRC
        ;LD        *+AR2(1),A            ; |161|
        LD        *+AR2(1),16,A 
        MVKD      *(AR2),*SP(2)
        ;SFTL      A,#15,A               ; |161| 
        ;SFTL      A,#1,A                ; |161| 
		SSBX      FRCT;;wly
        ;RSBX      OVM;;wly
        SSBX      OVM
        ORM       #2,*(PMST);wly 
        ;;;MVDK      *SP(4),*(AR3)
        ;;;MVDK      *SP(3),*(AR2)       
        RPTB      LOOP_1-1
        ; loop starts
L9:    
;** 163	-----------------------    L_temp = _smas(L_temp, *U$19, *U$17);
;** 163	-----------------------    U$17 += 10;
;** 163	-----------------------    U$19 += 10;
;** 163	-----------------------    if ( --L$2 != -1 ) goto g7;
	.line	17
;----------------------------------------------------------------------
; 163 | L_temp = L_msu( L_temp, freq_prev[k][j], fg[k][j] );                   
; 165 | temp = extract_h(L_temp);                                              
;----------------------------------------------------------------------
        ;;RSBX      OVM;;wly
        ;SFTA      A,8                   ; |163| 
        MVDK      *SP(4),*(AR3)
        MVDK      *SP(3),*(AR2)
        ;SFTA      A,-8                  ; |163| 
        ;;SSBX      OVM;;wly
        ;;ORM       #2,*(PMST)
        ;;SSBX      FRCT
        ;;SSBX      OVM
        ;;ORM       #2,*(PMST)
        NOP
        MAS       *AR2, *AR3, A, A      ; |163| 
        ;;RSBX      OVM
        LDM       AR2,B
        ADD       #10,B
        STL       B,*SP(3)
        ;;;MAR       *+AR2(10)
        LDM       AR3,B
        ADD       #10,B
        STL       B,*SP(4)
        ;;;MAR        *+AR3(10)
        ; loop ends ; |163| 
LOOP_1:
		;;;MVKD      *(AR2),*SP(3)
		;;;MVKD      *(AR3),*SP(4)
L10:    
;**  	-----------------------    U$19 -= 39;
;**  	-----------------------    U$17 -= 39;
;** 166	-----------------------    L_temp = _lsmpy((int)(L_temp>>16), *U$27++);
;** 167	-----------------------    *U$34++ = (unsigned long)L_shl(L_temp, 3)>>16;
;** 169	-----------------------    if ( (++j) < 10 ) goto g2;
;**  	-----------------------    return;
        LD        *SP(4),B
        ADD       #-39,B
        STL       B,*SP(4)
        LD        *SP(3),B
        ADD       #-39,B
        STL       B,*SP(3)
	.line	20
;----------------------------------------------------------------------
; 166 | L_temp = L_mult( temp, fg_sum_inv[j] );                                
;----------------------------------------------------------------------
        ;;SSBX      FRCT
        SFTL      A,#-16,A              ; |166| 
        SSBX      OVM
        LD        *AR7+,T
        MPY       *(AL),A               ; |166| 
	.line	21
;----------------------------------------------------------------------
; 167 | lsp_ele[j] = extract_h( L_shl( L_temp, 3 ) );                          
;----------------------------------------------------------------------
        ;;RSBX      FRCT
        ;;RSBX      OVM
        ;;ST        #3,*SP(0)             ; |167| 
        ;;CALL      #_L_shl               ; |167| 
        SFTA	A,3
        ; call occurs [#_L_shl] ; |167| 
        SFTL      A,#-16,A              ; |167| 
        STL       A,*AR6+               ; |167| 
	.line	23
;----------------------------------------------------------------------
; 170 | return;                                                                
;----------------------------------------------------------------------
        MAR       *AR1+
        ;;SSBX      SXM
        ;RSBX      OVM
        LD        *(AR1),A              ; |169| 
        SUB       #10,A,A               ; |169| 
        BC        L8,ALT                ; |169| 
        ; branch occurs ; |169| 
	.line	25
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #6
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET
        ; return occurs
;;	.endfunc	171,000018400h,9



	.sect	".text"
	.global	_Lsp_prev_compose

;----------------------------------------------------------------------
; 122 | void Lsp_prev_compose(                                                 
; 123 | Word16 lsp_ele[],             /* (i) Q13 : LSP vectors
;     | */                                                                     
; 124 | Word16 lsp[],                 /* (o) Q13 : quantized LSP parameters
;     | */                                                                     
; 125 | Word16 fg[][M],               /* (i) Q15 : MA prediction coef.
;     | */                                                                     
; 126 | Word16 freq_prev[][M],        /* (i) Q13 : previous LSP vector
;     | */                                                                     
; 127 | Word16 fg_sum[]               /* (i) Q15 : present MA prediction coef.
;     | */                                                                     
; 128 | )                                                                      
;----------------------------------------------------------------------

;***************************************************************
;* FUNCTION DEF: _Lsp_prev_compose                             *
;***************************************************************

;***************************************************************
;*                                                             *
;* Using -g (debug) with optimization (-o3) may disable key op *
;*                                                             *
;***************************************************************
_Lsp_prev_compose:
	.line	8
;* A     assigned to _lsp_ele
	.sym	_lsp_ele,0, 19, 17, 16
	.sym	_lsp,2, 19, 9, 16
	.sym	_fg,3, 211, 9, 16,, 10
	.sym	_freq_prev,4, 211, 9, 16,, 10
	.sym	_fg_sum,5, 19, 9, 16
;
; BRC	assigned to temp var  L$2
;
;* BRC   assigned to L$2
	.sym	L$2,25, 4, 4, 16
;* A     assigned to L$2
	.sym	L$2,0, 4, 4, 16
;* AR4   assigned to L$1
	.sym	L$1,13, 4, 4, 16
;* AR5   assigned to U$7
	.sym	U$7,14, 19, 4, 16
;* AR0   assigned to U$9
	.sym	U$9,9, 19, 4, 16
;* AR3   assigned to U$17
	.sym	U$17,12, 20, 4, 16
;* AR2   assigned to U$19
	.sym	U$19,11, 20, 4, 16
;* AR1   assigned to U$30
	.sym	U$30,10, 19, 4, 16
;* A     assigned to _L_acc
	.sym	_L_acc,0, 5, 4, 32
;* B     assigned to _fg_sum
	.sym	_fg_sum,6, 19, 4, 16
;* AR2   assigned to _freq_prev
	.sym	_freq_prev,11, 211, 4, 16,, 10
;* AR3   assigned to _fg
	.sym	_fg,12, 211, 4, 16,, 10
;* AR1   assigned to _lsp
	.sym	_lsp,10, 19, 4, 16
;* A     assigned to _lsp_ele
	.sym	_lsp_ele,0, 19, 4, 16
;**  	-----------------------    #pragma MUST_ITERATE(10, 10, 10)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**  	-----------------------    U$7 = &fg_sum[-1];
;**  	-----------------------    U$9 = &lsp_ele[-1];
;**  	-----------------------    U$30 = lsp;
;**  	-----------------------    U$17 = (int * const)fg;
;**  	-----------------------    U$19 = (int * const)freq_prev;
;**  	-----------------------    L$1 = 9;
        PSHM      AR1
;----------------------------------------------------------------------
; 130 | Word16 j, k;                                                           
; 131 | Word32 L_acc;                 /* Q29 */                                
; 133 | for ( j = 0 ; j < M ; j++ ) {                                          
;----------------------------------------------------------------------
        RSBX      OVM
        NOP
        SUB       #1,A,A
        STM       #9,AR4
        STLM      A,AR0
        LD        *SP(5),B
        MVDK      *SP(3),*(AR3)
        MVDK      *SP(4),*(AR2)
        SUB       #1,B,B
        MVDK      *SP(2),*(AR1)
        STLM      B,AR5
L11:    
;**	-----------------------g2:
;** 134	-----------------------    L_acc = _lsmpy(*(++U$9), *(++U$7));
;**  	-----------------------    #pragma MUST_ITERATE(4, 4, 4)
;**  	-----------------------    #pragma LOOP_FLAGS(4096u)
;**	-----------------------g4:
;**  	-----------------------    L$2 = 3;
;**	-----------------------g7:
	.line	13
;----------------------------------------------------------------------
; 134 | L_acc = L_mult( lsp_ele[j], fg_sum[j] );                               
; 135 | for ( k = 0 ; k < MA_NP ; k++ )                                        
;----------------------------------------------------------------------
        SSBX      FRCT
        SSBX      OVM
        LD        *+AR5(1),T
        STM       #3,BRC
        MPY       *+AR0(1),A            ; |134|
        ORM       #2,*(PMST);;wly 
        SSBX 	SXM;;WLY
        RPTB      L13-1
        ; loop starts
L12:    
;** 136	-----------------------    L_acc = _smac(L_acc, *U$19, *U$17);
;** 136	-----------------------    U$17 += 10;
;** 136	-----------------------    U$19 += 10;
;** 136	-----------------------    if ( --L$2 != -1 ) goto g7;
	.line	15
;----------------------------------------------------------------------
; 136 | L_acc = L_mac( L_acc, freq_prev[k][j], fg[k][j] );                     
;----------------------------------------------------------------------
        ;;RSBX      OVM
        ;;SSBX      SXM
        ;;SFTA      A,8                   ; |136| 
        ;;SFTA      A,-8                  ; |136| 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -