📄 aci_mras.asm
字号:
LACC *+,16 ; ACC high = imbeta_old_high
; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = imbeta_old_low
; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ABS ; ACC = |imbeta(k-1)|
; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *- ; imbeta_old_low = ACC low
; ARP=AR2, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *+,AR0 ; imbeta_old_high = ACC high
; ARP=AR2, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
LT *,AR2 ; TREG = tmp4
; ARP=AR0, AR0->FR2, AR2->imbeta_old_low, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
MPYU *-,AR0 ; PREG = imbeta_old_low*tmp4
; ARP=AR2, AR0->FR2, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
ADRK #7 ; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SPH *,AR2 ; FR9 = tmp3_low = PREG high
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR2
;----------------------------------------------------------------------------------
MPYU *,AR0 ; PREG = imbeta_old_high*tmp4
; ARP=AR2, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR0
;----------------------------------------------------------------------------------
PAC ; ACC = imbeta_old_high*tmp4
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS *+ ; ACC = imbeta_old_high*tmp4 + tmp3_low
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *-,1 ; FR10 = tmp3_high = ACC high (Q31)
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *,1 ; FR9 = tmp3_low = ACC low (Q31)
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC * ; ACC = sign1
; ARP=AR0, AR0->FR3, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #7 ; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
BCND DONE2,GT ; Check sign1 = positive ?
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *-,16 ; ACC high = tmp3_high
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = tmp3_low
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
NEG ; Make the result negative
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *+ ; FR9 = tmp3_low = ACC low
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH * ; FR10 = tmp3_high = ACC high
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
DONE2 ; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SBRK #2 ; ARP=AR0, AR0->FR8, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
LACC *-,16 ; ACC high = tmp2_high
; ARP=AR0, AR0->FR7, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADDS * ; ACC low = tmp2_low
; ARP=AR0, AR0->FR7, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
ADRK #2 ; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SUBS *+ ; ACC = tmp2_low - tmp3_low
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SUBH * ; ACC = tmp2_high - tmp3_high
; ARP=AR0, AR0->FR10, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACH *- ; FR10 = tmp3_high = ACC high
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras
;----------------------------------------------------------------------------------
SACL *,AR3 ; FR9 = tmp3_low = ACC low
; ARP=AR0, AR0->FR9, AR2->imbeta_old_high, AR3->wr_hat_mras, ARP=AR3
;----------------------------------------------------------------------------------
SBRK #5 ; ARP=AR3, AR0->FR9, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
LT *,AR2 ; TREG = K7 (Q15)
; ARP=AR3, AR0->FR9, AR2->imbeta_old_high, AR3->K7, ARP=AR2
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR2, AR0->FR9, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
MPY *,AR0 ; PREG = K7*ialfa_mras (Q30)
; ARP=AR2, AR0->FR9, AR2->ialfa_mras, AR3->K7, ARP=AR0
;----------------------------------------------------------------------------------
PAC ; ACC = K7*ialfa_mras (Q30)
; ARP=AR0, AR0->FR9, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
SFL ; ACC = K7*ialfa_mras (Q31)
; ARP=AR0, AR0->FR9, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
ADDS *+ ; ACC = K7*ialfa_mras + tmp3_low (Q31)
; ARP=AR0, AR0->FR10, AR2->ialfa_mras, AR3->K7
;----------------------------------------------------------------------------------
ADDH *,AR2 ; ACC = K7*ialfa_mras + tmp3_high (Q31)
; ARP=AR0, AR0->FR10, AR2->ialfa_mras, AR3->K7, ARP=AR2
;----------------------------------------------------------------------------------
ADRK #9 ; ARP=AR2, AR0->FR10, AR2->imalfa_low, AR3->K7
;----------------------------------------------------------------------------------
SACL *- ; imalfa_low = ACC low (Q31)
; ARP=AR2, AR0->FR10, AR2->imalfa_high, AR3->K7
;----------------------------------------------------------------------------------
SACH *- ; imalfa_high = ACC high (Q31)
; ARP=AR2, AR0->FR10, AR2->imbeta_old_low, AR3->K7
;----------------------------------------------------------------------------------
IM_BETA ; ARP=AR2, AR0->FR10, AR2->imbeta_old_low, AR3->K7
;----------------------------------------------------------------------------------
LT *-,AR0 ; TREG = imbeta_old_low
; ARP=AR2, AR0->FR10, AR2->imbeta_old_high, AR3->K7, ARP=AR0
;----------------------------------------------------------------------------------
SBRK #9 ; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
MPYU * ; PREG = imbeta_old_low*tmp1_low
; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
ADRK #5 ; ARP=AR0, AR0->FR6, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
SPH * ; FR6 = tmp5 = PREG high (save partial result)
; ARP=AR0, AR0->FR6, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR0, AR2->imbeta_old_high, AR3->K7
;----------------------------------------------------------------------------------
MPYU *+,AR2 ; PREG = imbeta_old_low*tmp1_high
; ARP=AR0, AR0->FR1, AR2->imbeta_old_high, AR3->K7, ARP=AR2
;----------------------------------------------------------------------------------
LTP *-,AR0 ; TREG = imbeta_old_high, ACC = PREG
; ARP=AR2, AR0->FR1, AR2->imalfa_old_low, AR3->K7, ARP=AR0
;----------------------------------------------------------------------------------
MPYU * ; PREG = imbeta_old_high*tmp1_low (PREG old)
; ARP=AR0, AR0->FR1, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
ADRK #5 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
ADDS * ; ACC = imbeta_old_low*tmp1_high + tmp5
; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SBRK #6 ; ARP=AR0, AR0->FR0, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
MPYA * ; ACC = ACC + PREG old, PREG = imbeta_old_high*tmp1_high
; ARP=AR0, AR0->FR0, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
ADRK #6 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SACH *+ ; FR6 = tmp5 = ACC high
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SPLK #1h,* ; tmp2_low = 1 (carry bit)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
BCND NO_C2,NC ; Carry bit = 0 ?
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
B CHECK2 ; Branch to CHECK2 if carry bit = 1
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
NO_C2 ; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SPLK #0h,* ; tmp2_low = 0 (no carry bit)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
CHECK2 ; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
PAC ; ACC = imbeta_old_high*tmp1_high
;----------------------------------------------------------------------------------
SBRK #1 ; ARP=AR0, AR0->FR6, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
ADDS *+ ; ACC = imbeta_old_high*tmp1_high + tmp5
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
ADDH *+ ; ACC = imbeta_old_high*tmp1_high + tmp5 + tmp2_low
; ARP=AR0, AR0->FR8, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SACH *-,1 ; FR8 = tmp2_high = ACC high (Q31)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SACL *,1 ; FR7 = tmp2_low = ACC low (Q31)
; ARP=AR0, AR0->FR7, AR2->imalfa_old_low, AR3->K7
;----------------------------------------------------------------------------------
SBRK #3 ; ARP=AR0, AR0->FR4, AR2->imalfa_old_low, AR3->K7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -