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


;================================================================ 
;  File Name 
;  ---------- 
;  TEST_MUL.ASM 
; 
;  Brief Description of the Code: 
;  ------------------------------ 
;  Test for multiple 
; 
;  Ref 
;  ------ 
;  PITCH_A.C 
;================================================================ 
;  Str_Lag_max        .struct 
;  ptr_signal         .word   1 
;  lag_max            .word   1 
;  lag_min            .word   1 
;  ptr_cor_max        .word   1 
;  Str_Lag_max_Len    .endstruct 
;---------------------------------------------------------------- 
;  Buffer : Addr_lag_max_buf[2] at even boundary 
;---------------------------------------------------------------- 
;  Output : AR1 = p_max 
;  Modified Registers: AR4, AR5 
;---------------------------------------------------------------- 
		.mmregs 
		.include ../include/const.h 
		.include ../include/struct.h 
		.include ../include/ld8amem.h 
 
        .def     test_multiple 
 
param_lag_max   .tag     Str_Lag_max 
 
        .asg     "Addr_pitch_ol_buf",        scal_sig 
        .asg     "scal_sig+PIT_MAX+L_FRAME", max3 
        .asg     "max3+1",                   max2 
        .asg     "max2+1",                   max1 
        .asg     "max1+1",                   p_max3 
        .asg     "p_max3+1",                 p_max2 
        .asg     "p_max2+1",                 p_max1 
 
;==================== 
;Test for multiple 
;==================== 
test_multiple: 
 
 
 
; if(abs(T2*2-T3)<5) max2 += max3 * 0.25 
 
        LD      #param_lag_max, DP 
        ST      #max2, param_lag_max.ptr_cor_max 
        MVDM    param_lag_max.ptr_cor_max, AR5 
 
 
        LD      *(p_max2), 1, A 
        SUB     *(p_max3), A 
        NOP 
        SAT     A 
        XC      1, ALT 
                NEG     A         ; A = abs(3*p_max2-p_max3) 
        SUB     #5, A 
        LD      *(max2), 16, B 
        XC      2, ALT 
                MAC     *(max3), #8192, B 
        XC      2, ALT 
                STL     B, -16, *AR5 
 
 
; if(abs(T2*3-T3)<7) max2 += max3 * 0.25 
 
        LD      *(p_max2), 1, A 
        ADD     *(p_max2), A 
        SUB     *(p_max3), A 
        NOP 
        SAT     A 
        XC      1, ALT 
                NEG     A         ; A = abs(3*p_max2-p_max3) 
 
        SUB     #7, A 
        SAT     A 
        NOP 
        LD      *(max2), 16, B 
        XC      2, ALT 
                MAC     *(max3), #8192, B 
        XC      2, ALT 
                STL     B, -16, *AR5 
 
 
; if(abs(T1*2-T2)<5) max1 += max2 * 0.20 
 
        ST      #max1, param_lag_max.ptr_cor_max 
        MVDM    param_lag_max.ptr_cor_max, AR5 
 
 
        LD      *(p_max1), 1, A 
        SUB     *(p_max2), A 
        NOP 
        SAT     A 
        XC      1, ALT 
                NEG     A            ; A = abs(2*p_max1-p_max2)    
        SUB     #5, A 
        SAT     A 
        LD      *(max1), 16, B 
        XC      2, ALT 
                MAC     *(max2), #6554, B 
        XC      2, ALT 
                STL     B, -16, *AR5 
 
 
; if(abs(T1*3-T2)<7) max1 += max2 * 0.20 
 
        LD      *(p_max1), 1, A 
        ADD     *(p_max1), A 
        SUB     *(p_max2), A 
        NOP 
        SAT     A 
        XC      1, ALT 
                NEG     A             ; A = abs(3*p_max1-p_max2) 
        SUB     #7, A 
        SAT     A 
        LD      *(max1), 16, B 
        XC      2, ALT 
                MAC     *(max2), #6554, B 
        XC      2, ALT 
                STL     B, -16, *AR5 
 
        RET