lpc_asm.asm

来自「g.729汇编手工优化」· 汇编 代码 · 共 1,973 行 · 第 1/5 页

ASM
1,973
字号
        ;RSBX      OVM
        LDM       SP,B
        ADD       #5,B
        STL       B,*SP(0)              ;sp(5) = b0_h
        LDM       SP,B
        ADD       #4,B
        ;RSBX      FRCT
        STL       B,*SP(1)              ;sp(4) = b0_l
        ;CALL      #_L_Extract  
;-------------------  L_Extract  Inline  -----------------------------
        ;SSBX      SXM             ; ****
        ;RSBX      OVM
        ;SSBX      FRCT
        ;SFTA      A,8
        ;SFTA      A,-8
        ;SSBX      OVM

        MVDK      *SP(1),*(AR4)
        MVDK      *SP(0),*(AR2)
        
        LD        A,B                   
        SFTL      B,#-16,B              
        STLM      B,AR3
        MVKD      *(AR3),*AR2

        SFTA      A,-1              
        
        MVMD      AR3,T
        LD        #16384,B
        ;ORM       #2,*(PMST)
        MAS       *(BL), A              
        STL       A,*AR4  
;-------------------  L_Extract  End     -----------------------------                 
        LD        *SP(2),A
        STL       A,*SP(8)
        MVDK      *SP(3),*(AR6)         ;ar6=&b2_h
        LD        *SP(4),A
        STL       A,*SP(2)
        LD        *SP(5),A
        STL       A,*SP(3)
        BANZ      L26,*+AR1(-1)         
        
L27:    
;----------------------------------------------------------------------
; 711 | t0 = Mpy_32_16(b1_h, b1_l, x);        /* t0 = x*b1;              */    
;----------------------------------------------------------------------
        ;LD        *SP(2),A
        ;RSBX      FRCT
        ;STL       A,*SP(0)
        ;RSBX      OVM
        ;LD        *SP(6),A
        ;STL       A,*SP(1)
        ;LD        *SP(3),A
        ;CALL      #_Mpy_32_16           
;------------------- Mpy_32_16 inline  -------------------------------
        LD        *SP(2),T        ; T = lo
        LD        *SP(6),B        ; B = n
        ;STLM      A,AR3           ; ar1 = hi
        MVDK      *SP(3),*(AR5)
        LD        *(BL),16,A       ; ah = n   
        NOP
        MPYA      A                ; a = L_mult(lo, n)  
        STLM      B,T              ; T = n
        STH       A,*(AR4)         ; (ar2) = L_mult(lo, n)  
        MPY       *(AR5),A         ; a = L_mult(hi, n)           
        MVMD      AR4,T            
        MAC       #1, A  
;------------------- End  --------------------------------------------
;----------------------------------------------------------------------
; 712 | t0 = L_mac(t0, b2_h,(Word16)-32768L); /* t0 = x*b1 - b2          */    
; 713 | t0 = L_msu(t0, b2_l, 1);                                               
; 714 | t0 = L_mac(t0, f[i], 2048);           /* t0 = x*b1 - b2 + f[i]/2 */    
;----------------------------------------------------------------------
        ;SSBX      SXM
        ;RSBX      OVM
        MVMD      AR6,T
        LD        #-32768,B
        ;SFTA      A,8                   
        ;SFTA      A,-8                  
        ;ORM       #2,*(PMST)
        ;SSBX      FRCT
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        NOP
        MAC       *(BL), A              
        ;RSBX      OVM
        ;NOP
        ;SFTA      A,8                  
        ;SFTA      A,-8                 
        LD        #1,B
        LD        *SP(8),T
        ;SSBX      OVM
        MAS       *(BL), A             
        ;RSBX      OVM
        ;NOP
        ;SFTA      A,8                   
        ;SFTA      A,-8                  
        DST       A,*SP(10)             
        LD        *SP(9),A
        LD        *SP(7),B
        ADD       A,B                   
        STLM      B,AR1
        NOP
        DLD       *SP(10),A            
        LD        *AR1,T
        ;SSBX      OVM
        LD        #2048,B
        MAC       *(BL), A              
        DST       A,*SP(10)             

;----------------------------------------------------------------------
; 716 | t0 = L_shl(t0, 6);                    /* Q24 to Q30 with saturation */ 
; 717 | cheb = extract_h(t0);                 /* Result in Q14              */ 
;----------------------------------------------------------------------
        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #6,*SP(0)             
        ;CALL      #_L_shl             
        SFTA       A,6
;----------------------------------------------------------------------
; 720 | return(cheb);                                                          
;----------------------------------------------------------------------
        SFTL      A,#-16,A             
        ANDM      #-833,*(ST1)         
        ANDM      #-4,*(PMST)           
        FRAME     #12                   
        POPM      AR7                  
        POPM      AR6                  
        POPM      AR1                 
        RET       
        ; return occurs ; |740| 
	.endfunc	741,000018400h,15



	.sect	".text"
	.sym	_Chebps_10,_Chebps_10, 35, 3, 0
	.func	744

;***************************************************************
;* FUNCTION DEF: _Chebps_10                                    *
;***************************************************************

;***************************************************************
;*                                                             *
;* Using -g (debug) with optimization (-o3) may disable key op *
;*                                                             *
;***************************************************************
_Chebps_10:

        PSHM      AR1
        PSHM      AR6
        PSHM      AR7
        FRAME     #-12
        NOP
        STL       A,*SP(6)
        LD        *SP(16),A
        STL       A,*SP(7)
        MVDK      *SP(17),*(AR1)

;----------------------------------------------------------------------
; 737 | L_Extract(t0, &b1_h, &b1_l);          /* b1 = 2*x + f[1]     */        
;----------------------------------------------------------------------
        ;RSBX      OVM
        SSBX      FRCT
        SSBX      SXM
        LD        #4096,B
        LDM       SP,A
        ADD       #3,A
        STL       A,*SP(0)
        LDM       SP,A
        ADD       #2,A
        STL       A,*SP(1)
        SSBX      OVM
        LD        *SP(6),A
        MPY       *(AL),#256,A          ; |737| 
        ;RSBX      OVM
        MVDK      *SP(7),*(AR2)
        ;SFTA      A,8                   ; |737| 
        LD        *AR2(1),T
        ;SFTA      A,-8                  ; |737| 
        ;ORM       #2,*(PMST)
        ;SBX      OVM
        ORM       #2,*(PMST)
        MAC       *(BL), A              ; |737| 
        ;RSBX      FRCT
        ;RSBX      OVM
        ;NOP
        ;CALL      #_L_Extract           ; |737| 
;------------------  L_Extract inlien  ----------------------------
        ;SSBX      SXM             ; ****
        ;RSBX      OVM
        ;SSBX      FRCT
        ;SFTA      A,8
        ;SFTA      A,-8
        ;SSBX      OVM

        MVDK      *SP(1),*(AR4)
        MVDK      *SP(0),*(AR2)
        
        LD        A,B                   
        SFTL      B,#-16,B              
        STLM      B,AR3
        MVKD      *(AR3),*AR2

        SFTA      A,-1              
        
        MVMD      AR3,T
        LD        #16384,B
        ORM       #2,*(PMST)
        MAS       *(BL), A              
        STL       A,*AR4  
;------------------  L_Extract End     ----------------------------
        STM       #128,AR6

        LD        #0,A
        STL       A,*SP(8)

        ;RSBX      OVM
        ;SSBX      SXM
        LD        *(AR1),A              ; |739| 
        SUB       #2,A,A                ; |739| 
        BC        L28,AGT               ; |739| 

        BD        L30
        LD        #2,A
        STL       A,*SP(9)
  
L28:    

        LD        *SP(7),A
        ADD       #2,A,A
        STLM      A,AR7

        MVKD      *(AR1),*SP(9)
        LD        *SP(9),A
        SUB       #2,A,A
        STLM      A,AR1
L29:    

        ;LD        *SP(2),A
        ;RSBX      FRCT
        ;STL       A,*SP(0)
        ;RSBX      OVM
        ;LD        *SP(6),A
        ;STL       A,*SP(1)
        ;LD        *SP(3),A
        ;CALL      #_Mpy_32_16           
;-----------------  Mpy_32_16 inline  ----------------------------------
        LD        *SP(2),T        ; T = lo
        LD        *SP(6),B        ; B = n
        ;STLM      A,AR4           ; ar1 = hi
        MVDK      *SP(3),*(AR4)
        SSBX      SXM
        SSBX      FRCT
        SSBX      OVM
        LD        *(BL),16,A       ; ah = n   
        NOP
        MPYA      A                ; a = L_mult(lo, n)  
        STLM      B,T              ; T = n
        STH       A,*(AR2)         ; (ar2) = L_mult(lo, n)  
        MPY       *(AR4),A         ; a = L_mult(hi, n)           
        MVMD      AR2,T            
        MAC       #1, A   
                   
        ;ANDM      #-833,*(ST1)   
;-----------------  Mpy_32_16 End     ----------------------------------        

        ;RSBX      FRCT
        ;RSBX      OVM
        ;ST        #1,*SP(0)             
        ;CALL      #_L_shl               
        SFTA      A,1

        ;RSBX      OVM
        ;NOP
        ;SFTA      A,8                   
        ;SSBX      SXM
        MVMD      AR6,T
        LD        #-32768,B
        ;SFTA      A,-8                  
        ;ORM       #2,*(PMST)
        ;SSBX      FRCT
        ;SSBX      OVM
        ORM       #2,*(PMST)
        MAC       *(BL), A             
        ;RSBX      OVM
        ;NOP
        ;SFTA      A,8                   
        ;SSBX      OVM
        ;SFTA      A,-8                  
        LD        *SP(8),T
        LD        #1,B
        MAS       *(BL), A              
        ;RSBX      OVM
        ;NOP
        ;SFTA      A,8                   
        ;SSBX      OVM
        LD        *AR7+,T
        LD        #4096,B
        ;SFTA      A,-8                  
        MAC       *(BL), A             

        ;RSBX      OVM
        LDM       SP,B
        ADD       #5,B
        ;STL       B,*SP(0)
        STLM      B,AR2
        LDM       SP,B
        ADD       #4,B
        ;RSBX      FRCT
        ;STL       B,*SP(1)
        STLM      B,AR4
        ;CALL      #_L_Extract          
;-------------------  L_Extract  Inline  -----------------------------
        ;SSBX      SXM             ; ****
        ;RSBX      OVM
        ;SSBX      FRCT
        ;SFTA      A,8
        ;SFTA      A,-8
        ;SSBX      OVM

        ;MVDK      *SP(1),*(AR4)
        ;MVDK      *SP(0),*(AR2)
        
        LD        A,B                   
        SFTL      B,#-16,B              
        STLM      B,AR3
        MVKD      *(AR3),*AR2

        SFTA      A,-1              
        
        MVMD      AR3,T
        LD        #16384,B
        ;ORM       #2,*(PMST)
        MAS       *(BL), A              
        STL       A,*AR4  
;-------------------  L_Extract  End     ----------------------------- 
        LD        *SP(2),A
        STL       A,*SP(8)

        MVDK      *SP(3),*(AR6)

        LD        *SP(4),A
        STL       A,*SP(2)

        LD        *SP(5),A
        STL       A,*SP(3)

        BANZ      L29,*+AR1(-1)         
 
L30:    
;----------------------------------------------------------------------
; 755 | t0 = Mpy_32_16(b1_h, b1_l, x);        /* t0 = x*b1;              */    
;----------------------------------------------------------------------
        ;LD        *SP(2),A
        ;RSBX      FRCT
        ;STL       A,*SP(0)
        ;RSBX      OVM
        ;LD        *SP(6),A
        ;STL       A,*SP(1)
        ;LD        *SP(3),A
        ;CALL      #_Mpy_32_16          
;------------------- Mpy_32_16 inline  -------------------------------
        LD        *SP(2),T        ; T = lo
        LD        *SP(6),B        ; B = n
        ;STLM      A,AR3           ; ar1 = hi
        MVDK      *SP(3),*(AR5)
        LD        *(BL),16,A       ; ah = n   
        NOP
        MPYA      A                ; a = L_mult(lo, n)  
        STLM      B,T              ; T = n
        STH       A,*(AR4)         ; (ar2) = L_mult(lo, n)  
        MPY       *(AR5),A         ; a = L_mult(hi, n)           
        MVMD      AR4,T            
        MAC       #1, A  
;------------------- End  --------------------------------------------
;----------------------------------------------------------------------
; 756 | t0 = L_mac(t0, b2_h,(Word16)-32768L); /* t0 = x*b1 - b2          */    
; 757 | t0 = L_msu(t0, b2_l, 1);                                               
; 758 | t0 = L_mac(t0, f[i], 2048);           /* t0 = x*b1 - b2 + f[i]/2 */    
;----------------------------------------------------------------------
        ;SSBX      SXM
        ;RSBX      OVM
        MVMD      AR6,T
        LD        #-32768,B
        ;SFTA      A,8                   
        ;SFTA      A,-8                  
        ;ORM       #2,*(PMST)
        ;SSBX      FRCT
        ;SSBX      OVM
        ;ORM       #2,*(PMST)
        MAC       *(BL), A              
        ;RSBX      OVM
        ;NOP

⌨️ 快捷键说明

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