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

📄 qua_lsp_asm.asm

📁 g.729汇编手工优化
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        MVDK      *SP(24),*(AR7)
        ADD       #5,B,B
        STLM      B,AR2
        SSBX      SXM              ; added by d.l.b
        SSBX      OVM              ; added by d.l.b
        RPTB      L12-1
L11:    
        LD        *AR3+,16,A            
        SUB       *AR2+,16,A,A          
        STH       A,*AR1+               
L12:    
;----------------------------------------------------------------------
; 228 | *index = 0;                                                            
;----------------------------------------------------------------------
        LD        #5,A
        ST        #0,*AR6              
        STL       A,*SP(13)
;----------------------------------------------------------------------
; 229 | L_dmin = MAX_32;                                                       
;----------------------------------------------------------------------
        RSBX      OVM
        NOP
        LD        #32767,16,A           ; |229| 
        OR        #65535,A,A            ; |229| 
        DST       A,*SP(14)             ; |229| 
;----------------------------------------------------------------------
; 230 | for ( k1 = 0 ; k1 < NC1 ; k1++ ) {                                     
;----------------------------------------------------------------------
        STM       #0,AR1
        SSBX      FRCT                  ; line-205
        SSBX      OVM                   ; line-199
        ORM       #2,*(PMST)            ; line-216  
L13:    
        LD        *SP(13),A
        ADD       *(AR7),A
        STLM      A,AR3
        LD        *SP(12),A
        MVMM      SP,AR2
        ADD       #5,A,A
        STLM      A,AR4
        MAR       *+AR2(#7)
;----------------------------------------------------------------------
; 231 | L_dist = 0;                                                            
; 232 | for ( j = NC ; j < M ; j++ ) {                                         
; 233 |   tmp = sub(buf[j], lspcb2[k1][j]);                                    
; 234 |   tmp2 = mult( wegt[j], tmp );                                         
;----------------------------------------------------------------------
        STM       #4,BRC
        LD        #0,A
        DST       A,*SP(16) 
        
        RPTB      L15-1

L14:    
;----------------------------------------------------------------------
; 235 | L_dist = L_mac( L_dist, tmp2, tmp );                                   
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;SSBX      SXM
        ;NOP
        LD        *AR2+,16,A            
        ;SSBX      OVM
        ;NOP
        SUB       *AR3+,16,A,A          ; (a) = tmp = sub(buf[j], lspcb2[k1][j])
        ;SFTA      A,-16,A               
        ;RSBX      OVM
        ;STLM      A,AR5
        ;SSBX      FRCT
        ;LD        *(AR5),16,A    
        STH       A,*(AR5)     
        ;SSBX      OVM
        ;NOP
        MPYA      *AR4+                 
        ;RSBX      OVM
        STH       B,*(T)
        DLD       *SP(16),A             
        ;ORM       #2,*(PMST)
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        MAC       *(AR5), A             
        DST       A,*SP(16)            

L15:    
;----------------------------------------------------------------------
; 238 | L_temp = L_sub(L_dist, L_dmin);                                        
; 239 | if ( L_temp <0L ) {                                                    
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;NOP
        DLD       *SP(14),A
        ;RSBX      FRCT
        ;DST       A,*SP(0)            
        ;DLD       *SP(16),A            
        ;CALL      #_L_sub 
        DRSUB     *SP(16),A             
        ;RSBX      OVM
        ;SSBX      SXM
        ;SFTA      A,8                   
        ;SFTA      A,-8                  
        BC        L16,AGEQ              
;----------------------------------------------------------------------
; 240 | L_dmin = L_dist;                                                       
;----------------------------------------------------------------------
        DLD       *SP(16),A
        DST       A,*SP(14)             ; |240| 
;----------------------------------------------------------------------
; 241 | *index = k1;                                                           
;----------------------------------------------------------------------
        MVKD      *(AR1),*AR6
L16:    
;----------------------------------------------------------------------
; 244 | return;                                                                
;----------------------------------------------------------------------
        LD        *SP(13),A
        MAR       *AR1+
        ADD       #10,A
        STL       A,*SP(13)
        LD        *(AR1),A              ; |243| 
        SUB       #32,A,A               ; |243| 
        BC        L13,ALT               ; |243| 
        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #18
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET

	.sect	".text"
	.global	_Lsp_get_tdist
;----------------------------------------------------------------------
; 137 | void Lsp_get_tdist(                                                    
; 138 | Word16 wegt[],        /* (i) norm: weight coef.                */      
; 139 | Word16 buf[],         /* (i) Q13 : candidate LSP vector        */      
; 140 | Word32 *L_tdist,      /* (o) Q27 : distortion                  */      
; 141 | Word16 rbuf[],        /* (i) Q13 : target vector               */      
; 142 | Word16 fg_sum[]       /* (i) Q15 : present MA prediction coef. */      
; 143 | )                                                                      
;----------------------------------------------------------------------

_Lsp_get_tdist:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-6
        ;NOP
        SSBX      SXM      ; ****
        SSBX      OVM
        SSBX      FRCT
;----------------------------------------------------------------------
; 145 | Word16 j;                                                              
; 146 | Word16 tmp, tmp2;     /* Q13 */                                        
; 147 | Word32 L_acc;         /* Q25 */                                        
;----------------------------------------------------------------------
        MVDK      *SP(12),*(AR2)
        MVDK      *SP(10),*(AR1)
        MVDK      *SP(11),*(AR6)
        MVDK      *SP(13),*(AR3)
;----------------------------------------------------------------------
; 149 | *L_tdist = 0;                                                          
; 150 | for ( j = 0 ; j < M ; j++ ) {                                          
;----------------------------------------------------------------------
        LD        #0,B
        STLM      A,AR7
        LD        #10,A
        DST       B,*AR6                ; |149| 
        STL       A,*SP(4)
        MVKD      *(AR2),*SP(3)
        MVKD      *(AR3),*SP(2)
L17:    
;----------------------------------------------------------------------
; 152 | tmp = sub( buf[j], rbuf[j] );                                          
; 153 | tmp = mult( tmp, fg_sum[j] );                                          
; 156 | L_acc = L_mult( wegt[j], tmp );                                        
;----------------------------------------------------------------------
        ;RSBX      OVM
        ;SSBX      SXM
        MVDK      *SP(3),*(AR2)
        LD        *AR1+,16,A            ; |152| 
        ;SSBX      OVM
        ;SSBX      FRCT
        SUB       *AR2+,16,A,A          ; |152| 
        ;RSBX      OVM
        MVKD      *(AR2),*SP(3)
        STH       A,*(T)
        MVDK      *SP(2),*(AR2)
        LD        *AR2+,16,A            ; |152| 
        ;SSBX      OVM
        NOP
        MPYA      A                     ; |152| 
        SFTA      A,-16,A               ; |152| 
        STL       A,*SP(5)
        MVKD      *(AR2),*SP(2)

;----------------------------------------------------------------------
; 157 | tmp2 = extract_h( L_shl( L_acc, 4 ) );                                 
;----------------------------------------------------------------------
        STLM      A,T
        ;ST        #4,*SP(0)             ; |157| 
        NOP
        MPY       *AR7+,A               ; |157| 
        ;RSBX      FRCT
        ;RSBX      OVM
        NOP
        ;CALL      #_L_shl               ; |157| 
        SFTA      A,4
        
        SFTL      A,#-16,A              ; |157| 
        STLM      A,T

;----------------------------------------------------------------------
; 158 | *L_tdist = L_mac( *L_tdist, tmp2, tmp );                               
;----------------------------------------------------------------------
        ;SSBX      SXM
        ;NOP
        DLD       *AR6,A
        LD        *SP(5),B
        ORM       #2,*(PMST)
        ;SSBX      FRCT
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        MAC       *(BL), A              ; |158| 
        DST       A,*AR6                ; |158| 

;----------------------------------------------------------------------
; 161 | return;                                                                
;----------------------------------------------------------------------
        MVDK      *SP(4),*(AR2)
        BANZD     L17,*+AR2(-1)          ; |159| 
        MVKD      *(AR2),*SP(4)

        ANDM      #-833,*(ST1)
        ANDM      #-4,*(PMST)
        FRAME     #6
        POPM      AR7
        POPM      AR6
        POPM      AR1
        RET

	.sect	".text"
	.global	_Lsp_last_select
;----------------------------------------------------------------------
; 166 | void Lsp_last_select(                                                  
; 167 | Word32 L_tdist[],     /* (i) Q27 : distortion         */               
; 168 | Word16 *mode_index    /* (o)     : the selected mode  */               
; 169 | )                                                                      
;----------------------------------------------------------------------
_Lsp_last_select:

        PSHM      AR1
        ;FRAME     #-2
        SSBX      SXM
        SSBX      OVM
;----------------------------------------------------------------------
; 171 | Word32 L_temp;                                                         
;----------------------------------------------------------------------
        MVDK      *SP(2),*(AR1)
        STLM      A,AR2

;----------------------------------------------------------------------

⌨️ 快捷键说明

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