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


;========================================================================== 
;  File Name 
;  ---------- 
;  PRED_LT3.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Compute the result of long term prediction with fractional 
;  interpolation of resolution 1/3. 
; 
;  Ref 
;  ------ 
;  PRED_LT3.C 
;========================================================================== 
 
 
        .mmregs 
 
        .include  ..\include\const.h 
        .include  ..\include\tab_ld8a.h 
        .include  ..\include\ld8amem.h 
 
        .text 
        .def      Pred_lt_3 
 
;----------------------------------------------------------------------- 
;  Pred_lt_3 
;----------------------------------------------------------------------- 
;  void Pred_lt_3( 
;    Word16   exc[],       /* in/out: excitation buffer */ 
;    Word16   T0,          /* input : integer pitch lag */ 
;    Word16   frac,        /* input : fraction of lag   */ 
;    Word16   L_subfr      /* input : subframe size     */ 
;  ) 
;  { 
;    Word16   i, j, k; 
;    Word16   *x0, *x1, *x2, *c1, *c2; 
;    Word32  s; 
; 
;    x0 = &exc[-T0]; 
; 
;    frac = negate(frac); 
;    if (frac < 0) 
;    { 
;      frac = add(frac, UP_SAMP); 
;      x0--; 
;    } 
; 
;    for (j=0; j T0 
;              Addr_T0_frac -> frac 
;              L_SUBFR = Lsubfr 
; 
;  Pointers : ptr_exc_subfrm -> exc 
; 
;  Buffer : Addr_pred_lt3_buf[32] 
;----------------------------------------------------------------------- 
;  Modified registers : A, B, AR0 - AR6, BK, BRC , T 
;----------------------------------------------------------------------- 
 
        .asg    "AR1", pXn 
        .asg    "AR2", pXn1 
        .asg    "AR3", pXn2 
        .asg    "AR7", pExc 
 
        .asg    "AR2", pC1Ref 
        .asg    "AR3", pC2Ref 
        .asg    "AR4", pC1 
        .asg    "AR5", pC2 
 
 
        .asg    "Addr_local_buf1", C1 
        .asg    "Addr_local_buf1+16", C2 
 
 
Pred_lt_3: 
	PSHM	AR7 
 
 
        MVDM    Addr_T0, AR0 
        MVDM    ptr_exc_subfrm, pXn 
        MVDM    ptr_exc_subfrm, pExc 
        LD      #Addr_T0_frac, DP 
        LD      Addr_T0_frac, B 
        NEG     B 
        MAR     *pXn-0 
        LD      #UP_SAMP, A 
        XC      2, BLT 
                ADD     A, B 
                MAR     *pXn- 
        STLM    A, AR0 
        SUB     B, A 
        ADD     #Intpl_3l, B 
        ADD     #Intpl_3l, A 
        STLM    B, pC1Ref 
        STLM    A, pC2Ref 
 
        STM     #C1, pC1 
        STM     #C2, pC2 
        STM     #L_INTER10 - 1, BRC 
        STM     #0, BK 
 
        RPTB    SUM_S - 1 
                MVDD    *pC1Ref+0%, *pC1+ 
                MVDD    *pC2Ref+0%, *pC2+ 
 
SUM_S: 
        MVMM    pXn, pXn1                ;x1 = x0 
        NOP 
        MAR     *pXn+                    ;x0++ 
        MVMM    pXn, pXn2                ;x2 = x0 
 
        STM     #C1, pC1 
        STM     #C2, pC2 
 
        STM     #L_INTER10 - 1, BRC 
 
 
        RPTBD    End_Sum - 1 
        LD	#0, A 
        NOP 
 
                MAC     *pXn1-, *pC1+, A 
                MAC     *pXn2+, *pC2+, A 
End_Sum: 
        ADD     #1,15,A 
        BANZD    SUM_S,*AR6- 
        STL     A, -16, *pExc+ 
EndPredLt3: 
	POPM	AR7 
        RET