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 + -
显示快捷键?