IMACL P,loc32,*XAR7/++
6-102
Example
; Calculate sum of product using 32-bit multiply and retain
; 64-bit result:
; int32 X[N]; // Data information
; int32 C[N]; // Coefficient information (located in
// low 4M)
; int64 sum = 0;
; for(i=0; i < N; i++)
; sum = sum + (X[i] * C[i]) >> 5;
; Calculate low 32 bits:
MOVL XAR2,#X
; XAR2 = pointer to X
MOVL XAR7,#C
; XAR7 = pointer to C
SPM −5
; Set product shift to ”>> 5”
ZAPA
; Zero ACC, P, OVCU
RPT #(N−1)
; Repeat next instruction N times
||IMACL P,*XAR2++,*XAR7++
; OVCU:ACC = OVCU:ACC + P,
; P = (X[i] * C[i]) << 5,
; i++
ADDUL ACC,@P
; OVCU:ACC = OVCU:ACC + P
MOVL @sum+0,ACC
; Store low 32 bits result into sum
; Calculate high 32 bits:
MOVU @AL,OVC
; ACC = OVCU (carry count)
MOVB AH,#0
MPYB P,T,#0
; P = 0
MOVL XAR2,#X
; XAR2 = pointer to X
MOVL XAR7,#C
; XAR7 = pointer to C
RPT #(N−1)
; Repeat next instruction N times
||QMACL P,*XAR2++,*XAR7++
; ACC = ACC + P >> 5,
; P = (X[i] * C[i]) >> 32,
; i++
ADDL ACC,P << PM
; ACC = ACC + P >> 5
MOVL @sum+2,ACC
; Store high 32 bits result into sum
Содержание TMS320C28x
Страница 30: ...1 12...
Страница 80: ...This page intentionally left blank 2 50 This page intentionally left blank...
Страница 269: ...IN loc16 PA 6 112 MOV AL 0 AL 0 UOUT IORegC AL IOspace IORegC AL 10...
Страница 308: ...MAXCUL P loc32 6 151 Saturate MOVL Var64 2 ACC Store result into Var64 MOVL Var64 P...
Страница 509: ...SUBL ACC P PM 6 352 SUBL ACC P PM ACC S B 11 M X 4 MOVH Y ACC 5 Store Q15 result into Y...
Страница 585: ...This page intentionally left blank 7 32 This page intentionally left blank...