EasyManua.ls Logo

Texas Instruments TMS320C28x - Page 259

Texas Instruments TMS320C28x
695 pages
Print Icon
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
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

Table of Contents

Related product manuals