📄 lspgetq_asm.asm
字号:
.line 13
FRAME #4
POPM AR7
POPM AR6
POPM AR1
RET
; return occurs
;; .endfunc 189,000018400h,7
.sect ".text"
.global _Lsp_prev_extract
;----------------------------------------------------------------------
; 147 | void Lsp_prev_extract(
; 148 | Word16 lsp[M], /* (i) Q13 : unquantized LSP parameters
; | */
; 149 | Word16 lsp_ele[M], /* (o) Q13 : target vector
; | */
; 150 | Word16 fg[MA_NP][M], /* (i) Q15 : MA prediction coef.
; | */
; 151 | Word16 freq_prev[MA_NP][M], /* (i) Q13 : previous LSP vector
; | */
; 152 | Word16 fg_sum_inv[M] /* (i) Q12 : inverse previous LSP vector
; | */
; 153 | )
;----------------------------------------------------------------------
;***************************************************************
;* FUNCTION DEF: _Lsp_prev_extract *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Lsp_prev_extract:
.line 8
;* A assigned to _lsp
.sym _lsp,0, 19, 17, 16
.sym _lsp_ele,10, 19, 9, 16
.sym _fg,11, 211, 9, 16,, 10
.sym _freq_prev,12, 211, 9, 16,, 10
.sym _fg_sum_inv,13, 19, 9, 16
;
; BRC assigned to temp var L$2
;
;* BRC assigned to L$2
.sym L$2,25, 4, 4, 16
;* A assigned to L$2
.sym L$2,0, 4, 4, 16
.sym U$7,2, 19, 1, 16
.sym U$17,3, 20, 1, 16
.sym U$19,4, 20, 1, 16
;* AR7 assigned to U$27
.sym U$27,16, 19, 4, 16
;* AR6 assigned to U$34
.sym U$34,15, 19, 4, 16
;* A assigned to _L_temp
.sym _L_temp,0, 5, 4, 32
;* AR1 assigned to _j
.sym _j,10, 3, 4, 16
;* AR7 assigned to _fg_sum_inv
.sym _fg_sum_inv,16, 19, 4, 16
;* B assigned to _freq_prev
.sym _freq_prev,6, 211, 4, 16,, 10
;* AR1 assigned to _fg
.sym _fg,10, 211, 4, 16,, 10
;* AR6 assigned to _lsp_ele
.sym _lsp_ele,15, 19, 4, 16
;* A assigned to _lsp
.sym _lsp,0, 19, 4, 16
;** ----------------------- #pragma MUST_ITERATE(10, 10, 10)
;** ----------------------- #pragma LOOP_FLAGS(5120u)
;** ----------------------- U$7 = &lsp[-1];
;** ----------------------- U$27 = fg_sum_inv;
;** ----------------------- U$34 = lsp_ele;
;** ----------------------- U$17 = (int * const)fg;
;** ----------------------- U$19 = (int * const)freq_prev;
;** 160 ----------------------- j = 0;
PSHM AR1
PSHM AR6
PSHM AR7
FRAME #-6
;----------------------------------------------------------------------
; 155 | Word16 j, k;
; 156 | Word32 L_temp; /* Q19 */
; 157 | Word16 temp; /* Q13 */
;----------------------------------------------------------------------
RSBX OVM
LD *SP(12),B
SUB #1,A,A
MVDK *SP(10),*(AR6)
STL B,*SP(4)
STL A,*SP(2)
MVDK *SP(11),*(AR1)
MVKD *(AR1),*SP(3)
MVDK *SP(13),*(AR7)
.line 14
;----------------------------------------------------------------------
; 160 | for ( j = 0 ; j < M ; j++ ) {
;----------------------------------------------------------------------
STM #0,AR1
L8:
;** -----------------------g2:
;** 161 ----------------------- L_temp = (long)*(++U$7)<<16;
;** ----------------------- #pragma MUST_ITERATE(4, 4, 4)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** -----------------------g4:
;** ----------------------- L$2 = 3;
;** -----------------------g7:
.line 15
;----------------------------------------------------------------------
; 161 | L_temp = L_deposit_h(lsp[j]);
; 162 | for ( k = 0 ; k < MA_NP ; k++ )
;----------------------------------------------------------------------
SSBX SXM
;;SSBX OVM;;wly
NOP
MVDK *SP(2),*(AR2)
STM #3,BRC
;LD *+AR2(1),A ; |161|
LD *+AR2(1),16,A
MVKD *(AR2),*SP(2)
;SFTL A,#15,A ; |161|
;SFTL A,#1,A ; |161|
SSBX FRCT;;wly
;RSBX OVM;;wly
SSBX OVM
ORM #2,*(PMST);wly
;;;MVDK *SP(4),*(AR3)
;;;MVDK *SP(3),*(AR2)
RPTB LOOP_1-1
; loop starts
L9:
;** 163 ----------------------- L_temp = _smas(L_temp, *U$19, *U$17);
;** 163 ----------------------- U$17 += 10;
;** 163 ----------------------- U$19 += 10;
;** 163 ----------------------- if ( --L$2 != -1 ) goto g7;
.line 17
;----------------------------------------------------------------------
; 163 | L_temp = L_msu( L_temp, freq_prev[k][j], fg[k][j] );
; 165 | temp = extract_h(L_temp);
;----------------------------------------------------------------------
;;RSBX OVM;;wly
;SFTA A,8 ; |163|
MVDK *SP(4),*(AR3)
MVDK *SP(3),*(AR2)
;SFTA A,-8 ; |163|
;;SSBX OVM;;wly
;;ORM #2,*(PMST)
;;SSBX FRCT
;;SSBX OVM
;;ORM #2,*(PMST)
NOP
MAS *AR2, *AR3, A, A ; |163|
;;RSBX OVM
LDM AR2,B
ADD #10,B
STL B,*SP(3)
;;;MAR *+AR2(10)
LDM AR3,B
ADD #10,B
STL B,*SP(4)
;;;MAR *+AR3(10)
; loop ends ; |163|
LOOP_1:
;;;MVKD *(AR2),*SP(3)
;;;MVKD *(AR3),*SP(4)
L10:
;** ----------------------- U$19 -= 39;
;** ----------------------- U$17 -= 39;
;** 166 ----------------------- L_temp = _lsmpy((int)(L_temp>>16), *U$27++);
;** 167 ----------------------- *U$34++ = (unsigned long)L_shl(L_temp, 3)>>16;
;** 169 ----------------------- if ( (++j) < 10 ) goto g2;
;** ----------------------- return;
LD *SP(4),B
ADD #-39,B
STL B,*SP(4)
LD *SP(3),B
ADD #-39,B
STL B,*SP(3)
.line 20
;----------------------------------------------------------------------
; 166 | L_temp = L_mult( temp, fg_sum_inv[j] );
;----------------------------------------------------------------------
;;SSBX FRCT
SFTL A,#-16,A ; |166|
SSBX OVM
LD *AR7+,T
MPY *(AL),A ; |166|
.line 21
;----------------------------------------------------------------------
; 167 | lsp_ele[j] = extract_h( L_shl( L_temp, 3 ) );
;----------------------------------------------------------------------
;;RSBX FRCT
;;RSBX OVM
;;ST #3,*SP(0) ; |167|
;;CALL #_L_shl ; |167|
SFTA A,3
; call occurs [#_L_shl] ; |167|
SFTL A,#-16,A ; |167|
STL A,*AR6+ ; |167|
.line 23
;----------------------------------------------------------------------
; 170 | return;
;----------------------------------------------------------------------
MAR *AR1+
;;SSBX SXM
;RSBX OVM
LD *(AR1),A ; |169|
SUB #10,A,A ; |169|
BC L8,ALT ; |169|
; branch occurs ; |169|
.line 25
ANDM #-833,*(ST1)
ANDM #-4,*(PMST)
FRAME #6
POPM AR7
POPM AR6
POPM AR1
RET
; return occurs
;; .endfunc 171,000018400h,9
.sect ".text"
.global _Lsp_prev_compose
;----------------------------------------------------------------------
; 122 | void Lsp_prev_compose(
; 123 | Word16 lsp_ele[], /* (i) Q13 : LSP vectors
; | */
; 124 | Word16 lsp[], /* (o) Q13 : quantized LSP parameters
; | */
; 125 | Word16 fg[][M], /* (i) Q15 : MA prediction coef.
; | */
; 126 | Word16 freq_prev[][M], /* (i) Q13 : previous LSP vector
; | */
; 127 | Word16 fg_sum[] /* (i) Q15 : present MA prediction coef.
; | */
; 128 | )
;----------------------------------------------------------------------
;***************************************************************
;* FUNCTION DEF: _Lsp_prev_compose *
;***************************************************************
;***************************************************************
;* *
;* Using -g (debug) with optimization (-o3) may disable key op *
;* *
;***************************************************************
_Lsp_prev_compose:
.line 8
;* A assigned to _lsp_ele
.sym _lsp_ele,0, 19, 17, 16
.sym _lsp,2, 19, 9, 16
.sym _fg,3, 211, 9, 16,, 10
.sym _freq_prev,4, 211, 9, 16,, 10
.sym _fg_sum,5, 19, 9, 16
;
; BRC assigned to temp var L$2
;
;* BRC assigned to L$2
.sym L$2,25, 4, 4, 16
;* A assigned to L$2
.sym L$2,0, 4, 4, 16
;* AR4 assigned to L$1
.sym L$1,13, 4, 4, 16
;* AR5 assigned to U$7
.sym U$7,14, 19, 4, 16
;* AR0 assigned to U$9
.sym U$9,9, 19, 4, 16
;* AR3 assigned to U$17
.sym U$17,12, 20, 4, 16
;* AR2 assigned to U$19
.sym U$19,11, 20, 4, 16
;* AR1 assigned to U$30
.sym U$30,10, 19, 4, 16
;* A assigned to _L_acc
.sym _L_acc,0, 5, 4, 32
;* B assigned to _fg_sum
.sym _fg_sum,6, 19, 4, 16
;* AR2 assigned to _freq_prev
.sym _freq_prev,11, 211, 4, 16,, 10
;* AR3 assigned to _fg
.sym _fg,12, 211, 4, 16,, 10
;* AR1 assigned to _lsp
.sym _lsp,10, 19, 4, 16
;* A assigned to _lsp_ele
.sym _lsp_ele,0, 19, 4, 16
;** ----------------------- #pragma MUST_ITERATE(10, 10, 10)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** ----------------------- U$7 = &fg_sum[-1];
;** ----------------------- U$9 = &lsp_ele[-1];
;** ----------------------- U$30 = lsp;
;** ----------------------- U$17 = (int * const)fg;
;** ----------------------- U$19 = (int * const)freq_prev;
;** ----------------------- L$1 = 9;
PSHM AR1
;----------------------------------------------------------------------
; 130 | Word16 j, k;
; 131 | Word32 L_acc; /* Q29 */
; 133 | for ( j = 0 ; j < M ; j++ ) {
;----------------------------------------------------------------------
RSBX OVM
NOP
SUB #1,A,A
STM #9,AR4
STLM A,AR0
LD *SP(5),B
MVDK *SP(3),*(AR3)
MVDK *SP(4),*(AR2)
SUB #1,B,B
MVDK *SP(2),*(AR1)
STLM B,AR5
L11:
;** -----------------------g2:
;** 134 ----------------------- L_acc = _lsmpy(*(++U$9), *(++U$7));
;** ----------------------- #pragma MUST_ITERATE(4, 4, 4)
;** ----------------------- #pragma LOOP_FLAGS(4096u)
;** -----------------------g4:
;** ----------------------- L$2 = 3;
;** -----------------------g7:
.line 13
;----------------------------------------------------------------------
; 134 | L_acc = L_mult( lsp_ele[j], fg_sum[j] );
; 135 | for ( k = 0 ; k < MA_NP ; k++ )
;----------------------------------------------------------------------
SSBX FRCT
SSBX OVM
LD *+AR5(1),T
STM #3,BRC
MPY *+AR0(1),A ; |134|
ORM #2,*(PMST);;wly
SSBX SXM;;WLY
RPTB L13-1
; loop starts
L12:
;** 136 ----------------------- L_acc = _smac(L_acc, *U$19, *U$17);
;** 136 ----------------------- U$17 += 10;
;** 136 ----------------------- U$19 += 10;
;** 136 ----------------------- if ( --L$2 != -1 ) goto g7;
.line 15
;----------------------------------------------------------------------
; 136 | L_acc = L_mac( L_acc, freq_prev[k][j], fg[k][j] );
;----------------------------------------------------------------------
;;RSBX OVM
;;SSBX SXM
;;SFTA A,8 ; |136|
;;SFTA A,-8 ; |136|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -