www.pudn.com > g729Decoder.rar > CORR_XY2.asm


        .mmregs 
 
        .include  ..\include\const.h 
        .include  ..\include\tab_ld8a.h 
        .include  ..\include\ld8amem.h 
 
        .def      Corr_xy2 
 
;---------------------------------------------------------------------- 
;  Corr_xy2 
;---------------------------------------------------------------------- 
;  void Corr_xy2( 
;        Word16 xn[],           /* (i) Q0  :Target vector.                  */ 
;        Word16 y1[],           /* (i) Q0  :Adaptive codebook.              */ 
;        Word16 y2[],           /* (i) Q12 :Filtered innovative vector.     */ 
;        Word16 g_coeff[],      /* (o) Q[exp]:Correlations between xn,y1,y2 */ 
;        Word16 exp_g_coeff[]   /* (o)       :Q-format of g_coeff[]         */ 
;  ) 
;---------------------------------------------------------------------- 
;  Contstants : Addr_xn1 -> xn 
;               Addr_yn1 -> y1 
;               Addr_yn2 -> y2 
;               Addr_g_coeff_cs -> g_coeff 
;               Addr_exp_g_coeff_cs -> exp_g_coeff 
;---------------------------------------------------------------------- 
 
 
        .asg    "AR2", pXn 
        .asg    "AR2", pYn1 
        .asg    "AR3", pYn2 
        .asg    "AR4", pGcoef 
        .asg    "AR5", pExpGcoef 
         
		.asg	"Addr_local_buf2",temp 
	 
Corr_xy2: 
        STM     #Addr_yn2, pYn2 
        STM     #Addr_g_coeff_cs + 2, pGcoef 
        STM     #Addr_exp_g_coeff_cs + 2, pExpGcoef 
        LD	   #1,A 
        STM      #L_SUBFR-1,AR1 
        STM     #temp,AR6 
 
Next:   
        LD       *pYn2+,-3,B 
        STL       B,*AR6 
        SQURA    *AR6,A 
        BANZ     Next,*AR1- 
        MAR      *+pYn2(-40) 
        LD      #1,B 
        SFTA    A,6 
        EXP     A 
        ST      T, *pExpGcoef 
        NORM    A 
        ADD     B, 15, A 
        SAT     A 
        STL     A,-16, *pGcoef+ 
        ADDM    #9, *pExpGcoef+ 
 
 
        STM     #Addr_xn1, pXn 
        STM     #Addr_yn2, pYn2 
 
        LD      B, A 
        STM     #L_SUBFR - 1,AR1 
Next1:    
        LD      *pYn2+,-3,B 
        STLM     B,T 
        BANZD    Next1,*AR1- 
        MAC     *pXn+,A 
        NOP 
 
        LD      #1,B 
        SFTA    A, 7 
        EXP     A 
        ST      T, *pExpGcoef+ 
        NORM    A 
        ADD     B, 15, A 
        SAT     A 
        LD      A, -16, A                  ; to be bit exact with c code 
        NEG     A 
        STL     A, *pGcoef+ 
 
        STM     #Addr_yn1, pYn1 
        STM     #Addr_yn2, pYn2 
 
        LD      B, A 
        STM     #L_SUBFR - 1,AR1 
Next2: 
        LD      *pYn2+,-3,B 
        STLM     B,T 
        BANZD    Next2,*AR1- 
        MAC     *pYn1+,A 
        NOP 
                                    
        LD      #1,B 
        SFTA    A, 7 
        EXP     A 
        ST      T, *pExpGcoef 
        NORM    A 
        ADD     B, 15, A 
        RETD 
        STL     A,-16,*pGcoef